欢迎来到天天文库
浏览记录
ID:43465147
大小:511.84 KB
页数:17页
时间:2019-10-08
《创建者(builder)模式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、生成器(builder)模式1.什么是生成器模式2.在什么情况下用生成器模式3.例子4.模型图5.Builder模式的要点6.Builder与AbstractFactory的区别7.小结Builder的概念概述:在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着
2、需求改变而改变?这就是要说的建造者模式。意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。案例:在肯德基店子里面,顾客在点各自需要的食物和套餐。肯德基要怎么应对不同的顾客要的不同的套餐呢?。比如说:肯德基豪华午餐:包括一个主食,一个辅食,一杯饮料(例如新奥尔良烤鸡腿堡+新奥尔良烤翅(2块)+百事可乐(中))。这些在不同的豪华午餐中可以是不同的,但是组合成豪华午餐的过程是相同的。无论顾客点的是汉堡,三名治还是鸡肉,过程都是一样的。柜台的员工直接把主食,辅食。这些是放在一个袋子中的。饮料被倒入杯中
3、,放在袋子外边。这些过程在相互竞争的餐馆中是同样的。客户端:顾客。想去买一套套餐(这里面包括汉堡,可乐,薯条),可以有1号和2号两种套餐供顾客选择。指导者角色:收银员。知道顾客想要买什么样的套餐,并告诉餐馆员工去准备套餐。建造者角色:餐馆员工。按照收银员的要求去准备具体的套餐,分别放入汉堡,可乐,薯条等。产品角色:最后的套餐,所有的东西放在同一个盘子里面。下面开始我们的买套餐过程。有图有真相~嘻嘻。。。产品(套餐)类:usingSystem;usingSystem.Collections.Generic;u
4、singSystem.Text;usingSystem.Collections;namespaceConsoleDesignPattern{ publicclassFood { Hashtablefood=newHashtable(); ///添加食品publicvoidAdd(stringstrName,stringstrPrice) { food.Add(strName,strPrice); } public
5、voidShow() { IDictionaryEnumeratorfoodEnumerator=food.GetEnumerator(); Console.WriteLine("FoodList:"); Console.WriteLine("----------------------------------"); stringstrFoodList=""; while(foodEnumerat
6、or.MoveNext()) { strFoodList+=""+foodEnumerator.Key.ToString(); strFoodList+=":t"+foodEnumerator.Value.ToString(); } Console.WriteLine(strFoodList); Console.WriteLine("-------------
7、--------------------"); } }}2.指导者通知建造器。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceConsoleDesignPattern{ /// ///FoodManager类,即指导者/// publicclassFoodManager { publicvoidConstruct(Builde
8、rbuilder) { builder.BuilderHamb(); builder.BuilderCoke(); builder.BuilderChip(); } }}3.建造者处理指导者的要求,并将部件添加到产品中。using
此文档下载收益归作者所有