1. 程式人生 > >設計模式-模板模式-C++實現

設計模式-模板模式-C++實現

模板模式:定義一個操作的演算法和骨架,而將一些步驟延遲到子類中。使得子類可以不改變一個演算法的結構的情況下可以重新定義這個演算法的一些步驟。

比如:
炒菜這件事情就有統一的步驟,先放油再放調料加火炒菜,這個固定不變的。而且順序也是不變的。但是炒不同的菜加油的多少,火候的掌握是不相同的。比如我炒菜時喜歡放的油少,而我媳婦炒菜時喜歡多放油。

場景:
1.實現演算法的不變部分,並將可變的行為留給子類實現;
2.將各個子類中公共的行為提取到父類中避免程式碼重複;

#include <stdio.h>

class Cook {
public:
	void cooking() {
		addOil();//先放油
		addSeasoning();//再放調料
		addFire();//加火
	}
protected:
	virtual void addOil() = 0;
	virtual void addSeasoning() = 0;
	virtual void addFire() = 0;
};

class MyCook :public Cook {
public:
	void addOil() {
		printf("新增少量的油!\n");
	}
	void addSeasoning() {
		printf("新增少量的調料\n");
	}

	void addFire() {
		printf("小火慢燉!\n");
	}
};

class WifeCook :public Cook {
public:
	void addOil() {
		printf("新增大量的油!\n");
	}
	void addSeasoning() {
		printf("新增大量的調料\n");
	}

	void addFire() {
		printf("大貨快炒!\n");
	}
};

int main() {

	MyCook* myCook = new MyCook;
	WifeCook* wifeCook = new WifeCook;

	myCook->cooking();

	wifeCook->cooking();

	return 0;
}

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