单例模式
Service Locator
这实际上是属于一种全局获取依赖对象的设计模式,可以理解为“我不通过构造函数传进来,而是到一个全局注册中心里去拿对象。”
Meyer’s Singleton
经典代码:
class StreamManager {
public:
static StreamManager& instance()
{
static StreamManager obj;
return obj;
}
private:
StreamManager() {}
};
//使用
CmsStreamManager::instance().start();
缺点
隐式依赖
RecordController(controller)
//它内部还依赖:
CmsStreamManager::instance()
生命周期不可控
谁创建? 谁销毁? 什么时候初始化?全隐藏。