建造者模式过程图解(Builder Pattern)

建造者模式过程图解(Builder Pattern)

ID:40959928

大小:636.50 KB

页数:21页

时间:2019-08-11

建造者模式过程图解(Builder Pattern)_第1页
建造者模式过程图解(Builder Pattern)_第2页
建造者模式过程图解(Builder Pattern)_第3页
建造者模式过程图解(Builder Pattern)_第4页
建造者模式过程图解(Builder Pattern)_第5页
资源描述:

《建造者模式过程图解(Builder Pattern)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、建造者模式过程图解(BuilderPattern)——探索设计模式系列之四Terrylee,2005年12月17日概述在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。本文通过现实生活中的买KFC的例子,用图解的方式来诠释建造者模式。意图将一个复杂的构建与其表示相分离,使得同样的构建过程可

2、以创建不同的表示。模型图生活中的例子生成器模式将复杂对象的构建与对象的表现分离开来,这样使得同样的构建过程可以创建出不同的表现。这种模式用于快餐店制作儿童餐。典型的儿童餐包括一个主食,一个辅食,一杯饮料和一个玩具(例如汉堡、炸鸡、可乐和玩具车)。这些在不同的儿童餐中可以是不同的,但是组合成儿童餐的过程是相同的。无论顾客点的是汉堡,三名治还是鸡肉,过程都是一样的。柜台的员工直接把主食,辅食和玩具放在一起。这些是放在一个袋子中的。饮料被倒入杯中,放在袋子外边。这些过程在相互竞争的餐馆中是同样的。实现过程图解在这里我们还是以去KFC店买套餐为例子,示意图如下:客户端:顾客。想去买一套套餐(这

3、里面包括汉堡,可乐,薯条),可以有1号和2号两种套餐供顾客选择。指导者角色:收银员。知道顾客想要买什么样的套餐,并告诉餐馆员工去准备套餐。建造者角色:餐馆员工。按照收银员的要求去准备具体的套餐,分别放入汉堡,可乐,薯条等。产品角色:最后的套餐,所有的东西放在同一个盘子里面。下面开始我们的买套餐过程。1.客户创建Derector对象,并用它所想要的Builder对象进行配置。顾客进入KFC店要买套餐,先找到一个收银员,相当于创建了一个指导者对象。这位收银员给出两种套餐供顾客选择:1普通套餐,2黄金套餐。完成的工作如时序图中红色部分所示。程序实现: 1using System; 2usin

4、g System.Configuration; 3using System.Reflection; 4 5namespace KFC 6{ 7    /**//// 

 8    /// Client 类 9    /// 10    public class Client11    {12        public static void Main(string[] args)13        {14            FoodManager foodmanager = new FoodManager();1516            B

5、uilder instance;1718            Console.WriteLine("Please Enter Food No:");1920            string No = Console.ReadLine();2122            string foodType = ConfigurationSettings.AppSettings["No"+No];2324            instance = (Builder)Assembly.Load("KFC").CreateInstance("KFC." + foodType);2526  

6、          foodmanager.Construct(instance);27        }28    }29}30产品(套餐)类: 1using System; 2using System.Collections; 3 4namespace KFC 5{ 6    /**//// 

 7    /// Food类,即产品类 8    ///  9    public class Food10    {11        Hashtable food = new Hashtable();12        13        /**//

7、// 

14        /// 添加食品15        /// 16        /// 食品名称17        /// 价格18        public void Add(string strName,string Price)19        {20           

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。