这是一段防爬虫文字,读者可跳过 今天,他突发奇想,为什么做汉堡就得是那个顺序呢?为什么不能先把肉烤好,然后凉一会?为什么不能先挤奶油然后把带着奶油的面包拿去烤?为什么要用生菜不用熟菜? 他想着,就决心变革。但是他跟他的员工讲不通啊,员工不理解他,他怒了,他把自己能想到的搭配顺序列成abcdefg等计划,然后告诉员工:“你,给我去做A计划”、“你,给我去做B计划”、“你,给我去做C计划”··· 于是一切就这样井然有序的执行了。 那么这件事中涉及到些什么呢? 那我们来化成图: 如果你是要做一个生产车间,我建议使用模板方法模式,那个不用对流程有太大改变,不需要你天马行空的设计,一切是那么的顺其自然。 将一个复杂对象的内部构建与它的表示分离,使得同样的构造过程可以创建不同的表示 在建造者模式中,有如下四个角色: 建造者模式关注的是零件类型和装配工艺,这是它与工厂模式最大的不同,在使用建造者模式的时候考虑一下模板方法模式,别孤立思考一个模式。 对于工厂模式,重点是创建,创建零件是它的职责,组装顺序不是它该关心的。 好,今天先到这里,明天有点忙,希望能续更。
本文为ImapBox作者“看,未来”原创,我的ImapBox地址为 https://lion-wu.blog.csdn.net/
本篇隶属于我的专栏 – 《设计模式 之 设计模式进阶》https://blog.csdn.net/qq_43762191/category_10059121.html
作者版权,未经允许,禁止转载。多道工艺打造极佳产品
首先涉及到上一篇 模板方法模式,我说了这俩模式契合度挺高。
然后还涉及到老板那天马行空的abcdefg,是吧,乍一看,好多个模板套一起,咋整?那就是“建造者模式”!
代码实现
#include<iostream> #include<list> using namespace std; class abstracthumber { public: virtual void bread() = 0; virtual void barbecue() = 0; virtual void cream() = 0; virtual void lettuce() = 0; void run() //将共同的核心算法流程提炼到抽象类 { for (list<string>::iterator it = order->begin(); it != order->end(); it++) { if (*it == "bread") this->bread(); else if (*it == "beef") this->barbecue(); else if (*it == "cream") this->cream(); else if (*it == "lettuce") this->lettuce(); } } void set_order(list<string>* s) { this->order = s; } private: list<string>* order; }; class chicken :public abstracthumber { public: void bread() { cout << "鸡腿堡的面包" << endl; } void barbecue() { cout << "鸡腿堡的鸡腿" << endl; } void cream() { cout << "鸡腿堡的奶油" << endl; } void lettuce() { cout << "鸡腿堡的生菜" << endl; } }; class beef :public abstracthumber { public: void bread() { cout << "牛肉堡的面包" << endl; } void barbecue() { cout << "牛肉堡的鸡腿" << endl; } void cream() { cout << "牛肉堡的奶油" << endl; } void lettuce() { cout << "牛肉堡的生菜" << endl; } }; int main() { abstracthumber* a = new chicken(); abstracthumber* b = new beef(); list<string> sa ; sa = { "bread","beef","cream","lettuce" }; a->set_order(&sa); a->run(); list<string> sb; sb = { "beef","bread","cream","lettuce" }; b->set_order(&sb); b->run(); }
我的感悟
如果你要做的是一个乐高积木,那我建议你使用建造者模式,这个模式可以满足你所有的想象,只要你有零件。建造者模式定义
建造者模式应用
优势
使用场景
注意事项
下一篇:《代理模式》
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算