实体创建:业务侧注册创建接口到平台工厂

来源:互联网 发布:sqlserver完全卸载 编辑:程序博客网 时间:2024/05/05 09:31

 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)

经常我们会碰到这样的需求:

平台侧在框架中,需要动态创建业务实体 (平台侧不能依赖业务侧头文件)。


碰到这种情况,我们一般也都会想到使用注册机制,把业务侧实体创建接口注册到平台工厂中去。



下面就是一种实现的方法

----------------------------平台侧

// 提供单例的管理接口模式,并提供工厂类的Lisener创建接口

class IEntity

{

};

class IEntityFactory

{

public:

virtual IEntity createEntity();

};

class EntityCreaterManager

{

public:

     EntityCreaterManager* GetSIngleton() {static EntityCreaterManager_mng; return s_mng;}

     void RegisterEntityFactory(IEntityFactory* pListner, char* name); 

      IEntityFactory GetEntityFactory(char* name);

}


----------------------------业务侧

// 使用静态函数的缺省构造函数,调用注册,把AEntityFactory注册到EntityCreaterManager中

class AEntity : public IEntity

{

};

class AEntityFactory : public IEntityFactory

{

public:

    AEntityFactory()

    {

         ListnerManager::GetSIngleton()::RegisterListner(this, "Entity");

    }

    virtual IEntity createEntity() { return new AEntity; }

}

static AEntityFactory s_factory;


在以后就可以使用 ListenerCreaterManager 来依据注册的名称 创建所有的对象了



 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)




0 0
原创粉丝点击