#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");
}
设计模式C++练习(1)_工厂模式
最新推荐文章于 2025-07-31 00:17:37 发布