zoukankan      html  css  js  c++  java
  • 设计模式之——Factory(工厂模式)

    工厂模式用于,通过统一的创建对象接口来创建对象,而子类可以决定对象的创建方式。

    class CObject
    {
    
    };
    
    class CCar : public CObject
    {
    
    };
    
    class CFactory
    {
    	virtual CObject* Create() = 0;
    };
    
    class CCarFactory : CFactory
    {
    	virtual CObject* Create()
    	{
    		return new CCar;
    	}
    };

    那么将工厂模式运用到Utility模块中的方式为:

    class YKObject
    {
    
    };
    
    class YKMapObject
    {
    	// YKObjectSPtr为智能指针
    	virtual YKObjectSPtr CreateObj(YK_ID id = 0, YK_BOOL bTemp = false) = 0;
    };
    
    template <class T>
    class YKMapT : YKMapObject
    {
    	virtual YKObjectSPtr CreateObj(YK_ID id = 0, YK_BOOL bTemp = false) {
    		if (bTemp)
    			id = 0;
    
    		// 为每个对象指定一个ID,即每个对象将关联一个ID
    		const YK_ID newId = YKIDCreater::Instance()->CreateNewID(id);
    		reference objPtr = Get(newId);
    		if (objPtr.ValidObj())
    			return objPtr;
    
    		// 外界可提供额外的创建参数,类似于MFC中的OnCreate响应方式
    		std::vector<YKAny> vecParam;
    		value_type newObj(true);
    		newObj->SetID(newId);
    		if (newObj->Create(vecParam))
    		{
    			Insert(newObj, bTemp);
    			return newObj;
    		}
    
    		return YK_NULL;
    	}
    };
  • 相关阅读:
    11.09_近期需要关注和学习的,,,
    11.08_
    11.04_晚
    11.04
    gitlab
    eos开发指南
    谷歌助记词
    solidity语法解读
    parity注记词和地址
    dice2win早期版本
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3190081.html
Copyright © 2011-2022 走看看