现在的位置: 首页 > 综合 > 正文

设计模式之——Factory(工厂模式)

2013年12月07日 ⁄ 综合 ⁄ 共 773字 ⁄ 字号 评论关闭

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

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;
	}
};

抱歉!评论已关闭.