C++模板模式

学了C++基本的语法都知道继承可以让子类拥有更多的功能,除了继承还有组合,委托,也能让一个类的功能增加。设计模式,这个设计是设计继承,组合,委托,之间相互叠加的方式,让其符合业务需求。
模板方法模式针对的是需要重复做一些流程性的东西,这些流程顺序不会改变,而每个流程具体实现可能会改变的业务。下面代码中,把这些流程作为抽象类成员函数,再此类的各个派生类中,具体实现这些函数。
这些代码都是在学习这些的过程中码的。。。。。
上代码,亲测有效!

#include <iostream>
#include <string>
using namespace std;

//符合开闭原则

//抽象模板
class DrinkTemplate
{
    
    
public:
	//煮水
	virtual void BoiledWarter() = 0;
	//冲泡
	virtual void Brew() = 0;
	//倒入杯中
	virtual void PourInCup() = 0;
	//加辅助料
	virtual void AddSomething() = 0;
	//模板方法
	void Make()
	{
    
    
		BoiledWarter();
		Brew();
		PourInCup();
		AddSomething();
	}
};

//冲泡咖啡
class Coffee : public DrinkTemplate
{
    
    
	//煮水
	virtual void BoiledWarter()
	{
    
    
		cout << "煮山泉水..." << endl;
	}
	//冲泡
	virtual void Brew()
	{
    
    
		cout << "冲泡咖啡" << endl;
	}
	//倒入杯中
	virtual void PourInCup()
	{
    
    
		cout << "咖啡倒入杯中" << endl;

	}
	//加辅助料
	virtual void AddSomething()
	{
    
    
		cout << "加糖,加牛奶,加醋" << endl;
	}
};

//冲泡茶水
class Tea : public DrinkTemplate
{
    
    
	//煮水
	virtual void BoiledWarter()
	{
    
    
		cout << "煮自来水..." << endl;
	}
	//冲泡
	virtual void Brew()
	{
    
    
		cout << "冲泡铁观音" << endl;
	}
	//倒入杯中
	virtual void PourInCup()
	{
    
    
		cout << "茶水倒入杯中" << endl;
	}
	//加辅助料
	virtual void AddSomething()
	{
    
    
		cout << "加糖,加柠檬,加生姜" << endl;
	}
};

void test01()
{
    
    
	Tea* tea = new Tea;
	tea->Make();
	cout << "----------------------" << endl;
	Coffee* coffee = new Coffee;加粗样式
	coffee->Make();
}

int main(void)
{
    
    
	test01();
	system("pause");
	return 0;
}

当你感觉自己无法解决的时候,不要忘了,你还有为自己鼓掌的时刻。

猜你喜欢

转载自blog.csdn.net/weixin_43466192/article/details/123103478