设计模式_抽象工厂

来源:互联网 发布:淘宝网上银行 编辑:程序博客网 时间:2024/06/06 09:31
#include<memory>#include<iostream>#include<string>#include<cctype>#include<algorithm>#include<cmath>#include<cstdio>using namespace std;enum Ctype {coreA,coreB};class SingleCore{public:    virtual void print(){        cout << "siglecore_print"<<endl;    }    ~SingleCore(){        cout <<"~~singlecore"<<endl;    }};class SingleCoreA :public SingleCore{public:    void print(){        cout << "A_print"<<endl;    }    ~SingleCoreA(){        cout <<"~~singlecoreA"<<endl;    }};class SingleCoreB :public SingleCore{public:    void print(){        cout << "B_print"<<endl;    }    ~SingleCoreB(){        cout <<"~~singlecoreB"<<endl;    }};class DoubleCore{public:    virtual void print(){        cout << "double_print"<<endl;    }    ~DoubleCore(){        cout <<"~~doublecore"<<endl;    }};class DoubleCoreA :public DoubleCore{public:    void print(){        cout << "doubleA_print"<<endl;    }    ~DoubleCoreA(){        cout <<"~~doublecoreA"<<endl;    }};class DoubleCoreB :public DoubleCore{public:    void print(){        cout << "doubleB_print"<<endl;    }    ~DoubleCoreB(){        cout <<"~~doublecoreB"<<endl;    }};class Factory{public:    virtual SingleCore* creatCore(){}    virtual DoubleCore* creatdouleCore(){}};class FactoryA : public Factory{public:    SingleCoreA* creatCore (){        return new SingleCoreA;    }    DoubleCoreA* creatdouleCore (){        return new DoubleCoreA;    }};class FactoryB : public Factory{public:    SingleCoreB* creatCore (){        return new SingleCoreB;    }    DoubleCoreB* creatdouleCore (){        return new DoubleCoreB;    }};int main(int argc, char *argv[]){    auto_ptr<Factory> faca  (new FactoryA() );    auto_ptr<SingleCore> sina  (faca->creatCore () );    auto_ptr <DoubleCore> doua (faca->creatdouleCore () );    sina->print ();    doua->print ();    return 0;}

0 0
原创粉丝点击