版权声明:本文为博主原创文章,未经同意不允许转载! https://blog.csdn.net/wb175208/article/details/84594611
简单工厂方法:定义一个创建对象的接口,让子类决定实例化那一个类。框架定义了和维护对象之间的关系,同时对象的产生也是由框架来负责。
场景:
1.当一个类不知道他所必须创建的对象的类的时候;
2.当一个类希望有它的子类指定他所创建的对象的时候。
#include <stdio.h>
class IToy {
public:
virtual void paly() = 0;
};
class CatToy :public IToy {
public:
void paly() {
printf("这是一个小猫玩具!\n");
}
};
class DogToy :public IToy {
public:
void paly() {
printf("这是一个小狗玩具!\n");
}
};
class DuckToy :public IToy {
public:
void paly() {
printf("这是一个小鸭子玩具!\n");
}
};
enum ToyType{
TOY_CAT,
TOY_DOG,
TOY_DUCK,
};
class ToyFactory {
public:
IToy* createToy(ToyType t) {
switch(t) {
case TOY_CAT:
return new CatToy();
break;
case TOY_DOG:
return new DogToy();
break;
case TOY_DUCK:
return new DuckToy();
break;
default:
break;
}
return nullptr;
}
};
int main() {
ToyFactory* toyFactory = new ToyFactory;
IToy*duckToy = toyFactory->createToy(TOY_DUCK);
duckToy->paly();
IToy*catToy = toyFactory->createToy(TOY_CAT);
catToy->paly();
return 0;
}
运行结果: