博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大话设计模式C++版——建造者模式
阅读量:6915 次
发布时间:2019-06-27

本文共 1041 字,大约阅读时间需要 3 分钟。

    日常做菜的过程中,常常会有忘记放盐或者放2次盐的经历。最后导致好好的一盘菜让大家无从下口。这个时候就须要用到建造者模式来规范炒菜的过程,来保证每一道菜都会经历加油、放食物、放盐、放味精这4道主要的工序。同一时候保证每道工序不会反复。
1、炒菜基类
class CCook{public:	CCook()	{}	virtual	~CCook() {}		//建造过程函数	//为了保证全部的子类可以依照指定顺序依次实现完整的建造过程。而不会忘记某一个过程的调用(如忘了放盐)	void	Cook()	{		PutFat();			//先放油		PutFood();			//再放食物		PutSalt();			//接着放盐		PutAginomoto();		//最后放味精	}protected:	virtual	void PutFat() = 0;	virtual	void PutFood() = 0;	virtual	void PutSalt() = 0;	virtual	void PutAginomoto() = 0;};
2、炒肉类,继承并实现CCook的每一道工序
class CCookMeat : public CCook{public:private:	void PutFat()	{		printf("Please input 10 gram fat to the pen\n");	}		void PutFood()	{		printf("Please input 500 gram meat to the pen\n");	}		void PutSalt()	{		printf("Please input 2 gram salt to the pen\n");	}		void PutAginomoto()	{		printf("Please iput 1 gram aginomoto to the pen\n");	}};
3、实现演示样例
void	Test(){	CCookMeat	oCCookMeat;	oCCookMeat.Cook();}
执行结果例如以下:
   我们在开发过程中常常会碰到一种情况,一个类实现了一组底层的基本功能,但实现一个高级功能时须要把某些基本功能组合起来调用,这时採用建造者模式就能保证调用过程顺序一致且无遗漏,同一时候调用者调用也非常easy(如炒菜就仅仅需调用Cook()函数就可以,而不用去关心每个详细细节)。

你可能感兴趣的文章
vux 全局使用 loading / toast / alert
查看>>
面向对象数组操作
查看>>
Cocos2d-x之内存管理
查看>>
Sharepoint 列表分页开发
查看>>
当页面是本地页面时,通过ajax访问tomcat里的action,传递的参数在action里并不能识别...
查看>>
RocketMQ Java 客户端实现
查看>>
hdu 1133 Buy the Ticket (大数+递推)
查看>>
java:Java里数字转字符串前面自动补0的实现
查看>>
获取图片颜色的rgb,以供css设计背景颜色
查看>>
org.tinygroup.validate-验证框架
查看>>
人脸识别中的harr特征提取(转)
查看>>
Windows 8 Metro App开发[6]访问Assets文件夹
查看>>
Cpython的全局解释器锁(GIL)
查看>>
session共享方法
查看>>
ASP.NET AJAX web chat application
查看>>
14--Rails的ActiveView2
查看>>
UVa 496 - Simply Subsets
查看>>
java基础思维导图大全
查看>>
C# 面向对象7 命名空间
查看>>
MySQL单机上多实例安装
查看>>