1. 程式人生 > >設計模式-簡單工廠-C++實現

設計模式-簡單工廠-C++實現

簡單工廠方法:定義一個建立物件的介面,讓子類決定例項化那一個類。框架定義了和維護物件之間的關係,同時物件的產生也是由框架來負責。

場景:
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;
}

執行結果:
在這裡插入圖片描述