FactoryManager 主要管理控件创建的Delegate的注册Map

来源:互联网 发布:informix数据库版本 编辑:程序博客网 时间:2024/06/01 09:26

提到这个类我们不得不提及Template GenericManager



下面对成员函数进行分析

对于一个管理类的,它的操作总少不了对map成员变量的增删,

(如果加入改查的话,可能manager的职能就太细了。manager这种paradim)

值得介绍的应属对控件的创建:

IObject* FactoryManager::createObject(const std::string& _category, const std::string& _type){MapRegisterFactoryItem::iterator category = mRegisterFactoryItems.find(_category);if (category == mRegisterFactoryItems.end()){return nullptr;}MapFactoryItem::iterator type = category->second.find(_type);if (type == category->second.end()){return nullptr;}if (type->second.empty()){return nullptr;}IObject* result = nullptr;type->second(result);return result;}

可以看到凡是继承与基类IObject 的子类都可以通过FactoryManger创建。这就为控件的动态生成埋下伏笔。


何时调用createObject 

猜测 有两种可能:

    1)hard code

    2)通过Widget来注册注入。



原创粉丝点击