设计模式-简单工厂-C++实现

版权声明:本文为博主原创文章,未经同意不允许转载! 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;
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wb175208/article/details/84594611