设计模式之——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;

	}

};

你可能感兴趣的:(factory)