设计模式C++练习(1)_工厂模式

来源:互联网 发布:野兽派有淘宝店吗 编辑:程序博客网 时间:2024/05/01 17:55
#include <stdlib.h>#include <iostream>using namespace std;//抽象工厂模式class SingleCore {      public:          virtual void f()=0;};class SingleCoreA : public SingleCore {    public:        void f(){cout << "SingleCore1" << endl;}};class SingleCoreB : public SingleCore {    public:        void f(){cout << "SingleCore2" << endl;}};class MultiCore {      public:          virtual void f()=0;};class MultiCoreA : public MultiCore {    public:        void f(){cout << "MultiCore1" << endl;}};class MultiCoreB : public MultiCore {    public:        void f(){cout << "MultiCore2" << endl;}};class Factory {    public:        Factory(){}        virtual SingleCore* CreateSingleCore()=0;        virtual MultiCore* CreateMultiCore()=0;};class FactoryA : public Factory{    public:    SingleCore* CreateSingleCore(){return new SingleCoreA();}    MultiCore* CreateMultiCore(){return new MultiCoreA();}                };class FactoryB : public Factory{    public:    SingleCore* CreateSingleCore(){return new SingleCoreB();}    MultiCore* CreateMultiCore(){return new MultiCoreB();}};       /*简单工厂 class Base {      public:          virtual void f()=0;};class D1 : public Base {    public:        void f(){cout << "D1" << endl;}};class D2 : public Base {    public:        void f(){cout << "D2" << endl;}};enum CTYPE {d1 = 2, d2};    class Factory {    public:           Base *CreateBase(CTYPE type) {               if(type == 3)                   return new D2();               else if(type == 2)                   return new D1();           }                };Factory* factory = new Factory();    Base* b = factory->CreateBase(d2);    b->f();    b = factory->CreateBase(d1);    b->f();    system("pause");*/int main() {    Factory* factoryA = new FactoryA();    SingleCore* singleCoreA = factoryA->CreateSingleCore();    singleCoreA->f();    MultiCore* multiCoreA = factoryA->CreateMultiCore();    multiCoreA->f();    Factory* factoryB = new FactoryB();    SingleCore* singleCoreB = factoryB->CreateSingleCore();    singleCoreB->f();    MultiCore* multiCoreB = factoryB->CreateMultiCore();    multiCoreB->f();    system("pause");} 

0 0
原创粉丝点击