资源描述:
《[23种设计模式汇总]设计模式_建造者模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、设计模式 建造者模式 4个角色:指挥者(Director),建造者(Builder),具体建造者(ConcreteBuilder),产品(Product) 产品:需要创建的对象产品 具体建造者:创建产品的实例并且实现建造者多个方法对产品进行装配 建造者:本质为抽象类,里面的抽象方法供具体建造者重写,声明产品的引用 指挥者:调用建造者抽象类以及其方法 实现思路:客户端创建一个指挥者,并且实例化需要的产品的具体建造者,然后指挥者调用具体建造者的实例即将产品生产出
2、来。类图: 应用场景:在Silverlight中我们需要生产一列多行的输入框+TextBlock的组合,但是这些输入框的类型不同,有一些只能输入256个字符,有的只能输入20个字符,还有的是多行的,有的是单行的输入框。这些输入框的种类是固定的,但是可能用户自定义输入框的时候我们生成的顺序和各自的生成数量不知道。 分析:在这里产品是固定的,有A,B,C,D,E,F六种输入框+TextBlock,用户可能生成的情况是A,A,C,C,B,B,C、也可能是B,C,D,B,C,F。这里我们使
3、用建造者模式,这几种输入框基本上都差不多,都是TextBlock+TextBox的模式。但是可输入数量和是否多行是不定的,那么我们实现AConcreteBuilder,BConcreteBuilder,CConcreteBuilder,DConcreteBuilder,EConcreteBuilder,FConcreteBuilder等多个具体建造者,然后对于建造者中只需要两个方法分别实例化产品,并且对产品的属性(可输入字符数、是否可多行)进行设置,然后再用户需要调用什么产品的时候,使用指挥者调用想要的ConcreteBui
4、lder具体建造者即可。 下面我们以一个电脑产品生产的实例来具体看看BuilderPattern是如何使用的: 一、产品角色//产品classComputer{privatestringm_CompName;privatestringm_MemorySize;privatestringm_DiskSize;//////电脑名称///publicstringCompName{get{returnm_CompName;}set{m_CompName=value;}
5、}//////内存大小///publicstringMemorySize{get{returnm_MemorySize;}set{m_MemorySize=value;}}//////硬盘大小///publicstringDiskSize{get{returnm_DiskSize;}set{m_DiskSize=value;}}//////显示产品的信息///publicvoidShowComputerInfo(
6、){Console.WriteLine("------------------------");Console.WriteLine("电脑名称:"+CompName);Console.WriteLine("内存大小:"+MemorySize);Console.WriteLine("硬盘大小:"+DiskSize);}}复制代码 二、建造者角色//建造者定义建造产品的抽象方法和产品的引用abstractclassComputerBuilder{privateComputercomputerInstance;///
7、///返回建立的电脑产品实例///publicComputerComputerInstance{get{returncomputerInstance;}set{computerInstance=value;}}//////创建电脑名称///abstractpublicvoidCreateCompName();//////创建电脑内存///abstractpublicvoidCreateCompMemory();/
8、/////创建电脑硬盘///abstractpublicvoidCreateCompDisk();}复制代码 三、具体建造者角色//具体建造者创建苹果电脑classAppleConcreteBuilder:ComputerBuilder{