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

本文通过C++代码展示了抽象工厂模式的应用,定义了两个抽象产品接口(SingleCore和MultiCore),并实现了具体的工厂类(FactoryA和FactoryB)来创建对应的产品实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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");
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值