/* 小鱼号的代码日志
* 设计模式
* 模板方法
* 现实例子:
* 打豆浆的步骤
* 1 选原料,2加配料,3浸泡,4打磨
* 原味豆浆 什么都不加
* 红豆豆浆 需要加红豆
* 花生豆浆 需要加花生
* ...
* 加了不同的配料浸泡时间可能不同。。
*/
#include<iostream>
using namespace std;
//抽象的豆浆
class AbsSoyaMilk
{
public:
//制作豆浆
void make()
{
select();
add();
soak();
beat();
}
protected:
virtual void add() = 0; //2加配料
virtual void soak() = 0; //3 浸泡
private:
//1选原料
void select()
{
cout << "select perfect soybeab" << endl;
}
//4打豆浆
void beat()
{
cout << "start beat soyamilk" << endl;
}
};
//原味豆浆
class OriginalSoyaMilk : public AbsSoyaMilk
{
void add()
{
cout << "add nothing " << endl;
}
void soak()
{
cout << "soak 1 hour " << endl;
}
};
//红豆豆浆
class RedBeansSoyaMilk : public AbsSoyaMilk
{
void add()
{
cout << "add read beans " << endl;
}
void soak()
{
cout << "soak 1.5 hour " << endl;
}
};
//花生豆浆
class PeanutSoyaMilk : public AbsSoyaMilk
{
void add()
{
cout << "add Peanut " << endl;
}
void soak()
{
cout << "soak 1.8 hour " << endl;
}
};
void testTemplateMethod()
{
cout << "TemplateMethod:" << endl;
AbsSoyaMilk* soya = new OriginalSoyaMilk;
cout << "make Original soyamilk" << endl;
soya->make();
cout << "=========================" << endl;
cout << "make readbeans soyamilk" << endl;
soya = new RedBeansSoyaMilk;
soya->make();
cout << "=========================" << endl;
cout << "make peanut soyamilk" << endl;
soya = new PeanutSoyaMilk;
soya->make();
}
【C++设计模式】模板方法 之 打豆浆
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 模板方法模式:一种行为型设计模式 应用场景:模板方法是一种代码复用的基本技术,定义了一个操作中的算法骨架,而将一些...
- 模板方法模式是设计模式行为型中最简单的一种设计模式。在实际中你甚至可能经常用到,只是你自己不知道它是一种设计模式罢...