设计模式学习之抽象工厂

—————— C++版——————

//TBase为抽象 TConcreate为具体.   
template<class TBase,class TConcreate>  
class CConcreteFactory  
{  
    public:  
    static TBase* create()  
    {  
        reutrn new TConcreate();  
    }  
 }

 //抽象工厂 
 //注册自己的工厂由使用者自己完成
 //对象的释放由创建者自己维护  
 template<calss TBase>  
 class CBaseFactory  
 {  
 private:  
    CBaseFactory(){}  
    ~CBaseFactory(){}  
    CBaseFactory(const CBaseFactory& obj){}  
    CBaseFactory operator = (const CBaseFactory& obj){}  
 public:  
    static CBaseFactory* Instance()  
    {  
        static CBaseFactory<TBase> *pInstance;  
        if(pInstance == NULL)  
        {  
            pInstance = new CBaseFactory();  
        }  
        return pInstance;  
    }  
 private:  
 map<string,TBase*> mConcreateFactory;  
 public:  
 template<class TConcreate>  
 void registerFactory(const std::string& _type)   
 {  
    mConcreateFactory[_type] = CConcreateFactory<TBase,TConcreate>:create();  
 }  

 //销毁所有工厂  
 void destoryAllFactory()  
 {  
    mConcreateFactory.clear();  
 }  

 //获取对象
 TBase* create(const std::sting& _type)   
 {  
    TBase* pBase = mConcreateFactory[_type];  
 }  

 //销毁指定对象  
 void destory(const std:string& _type)  
 {  
    TBase* pBase = mConcreateFactory[_type];  
    if(pBase != 0)  
    delete pBase;  
 }         
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值