[23种设计模式汇总]设计模式_建造者模式

上传人:dfg****19 文档编号:172523304 上传时间:2022-12-05 格式:DOC 页数:7 大小:53KB
收藏 版权申诉 举报 下载
[23种设计模式汇总]设计模式_建造者模式_第1页
第1页 / 共7页
[23种设计模式汇总]设计模式_建造者模式_第2页
第2页 / 共7页
[23种设计模式汇总]设计模式_建造者模式_第3页
第3页 / 共7页
资源描述:

《[23种设计模式汇总]设计模式_建造者模式》由会员分享,可在线阅读,更多相关《[23种设计模式汇总]设计模式_建造者模式(7页珍藏版)》请在装配图网上搜索。

1、设计模式建造者模式4个角色:指挥者(Director),建造者(Builder),具体建造者(ConcreteBuilder),产品(Product) 产品:需要创建的对象产品 具体建造者:创建产品的实例并且实现建造者多个方法对产品进行装配 建造者:本质为抽象类,里面的抽象方法供具体建造者重写,声明产品的引用 指挥者:调用建造者抽象类以及其方法实现思路:客户端创建一个指挥者,并且实例化需要的产品的具体建造者,然后指挥者调用具体建造者的实例即将产品生产出来。类图:应用场景:在Silverlight中我们需要生产一列多行的输入框+TextBlock的组合,但是这些输入框的类型不同,有一些只能输入2

2、56个字符,有的只能输入20个字符,还有的是多行的,有的是单行的输入框。这些输入框的种类是固定的,但是可能用户自定义输入框的时候我们生成的顺序和各自的生成数量不知道。分析:在这里产品是固定的,有A,B,C,D,E,F六种输入框+TextBlock,用户可能生成的情况是A,A,C,C,B,B,C、也可能是B,C,D,B,C,F。这里我们使用建造者模式,这几种输入框基本上都差不多,都是TextBlock+TextBox的模式。但是可输入数量和是否多行是不定的,那么我们实现AConcreteBuilder,BConcreteBuilder,CConcreteBuilder,DConcreteBuil

3、der,EConcreteBuilder,FConcreteBuilder等多个具体建造者,然后对于建造者中只需要两个方法分别实例化产品,并且对产品的属性(可输入字符数、是否可多行)进行设置,然后再用户需要调用什么产品的时候,使用指挥者调用想要的ConcreteBuilder具体建造者即可。下面我们以一个电脑产品生产的实例来具体看看Builder Pattern是如何使用的:一、产品角色/产品class Computerprivate string m_CompName;private string m_MemorySize;private string m_DiskSize;/ / 电脑名称

4、/ public string CompNameget return m_CompName; set m_CompName = value; / / 内存大小/ public string MemorySizeget return m_MemorySize; set m_MemorySize = value; / / 硬盘大小/ public string DiskSizeget return m_DiskSize; set m_DiskSize = value; / / 显示产品的信息/ public void ShowComputerInfo()Console.WriteLine(-);C

5、onsole.WriteLine(电脑名称: + CompName);Console.WriteLine(内存大小: + MemorySize);Console.WriteLine(硬盘大小: + DiskSize);复制代码二、建造者角色/建造者 定义建造产品的抽象方法和产品的引用abstract class ComputerBuilderprivate Computer computerInstance;/ / 返回建立的电脑产品实例/ public Computer ComputerInstanceget return computerInstance; set computerInst

6、ance=value; / / 创建电脑名称/ abstract public void CreateCompName();/ / 创建电脑内存/ abstract public void CreateCompMemory();/ / 创建电脑硬盘/ abstract public void CreateCompDisk();复制代码三、具体建造者角色/具体建造者创建苹果电脑class AppleConcreteBuilder : ComputerBuilderpublic override void CreateCompName()ComputerInstance = new Compute

7、r();ComputerInstance.CompName = 苹果电脑;public override void CreateCompMemory()ComputerInstance.MemorySize = 4G;public override void CreateCompDisk()ComputerInstance.DiskSize = 500G;/具体建造者创建戴尔电脑class DellConcreteBuilder : ComputerBuilderpublic override void CreateCompName()ComputerInstance = new Comput

8、er();ComputerInstance.CompName = 戴尔电脑;public override void CreateCompMemory()ComputerInstance.MemorySize = 2GB;public override void CreateCompDisk()ComputerInstance.DiskSize = 320GB;/具体建造者创建惠普电脑class HpConcreteBuilder : ComputerBuilderpublic override void CreateCompName()ComputerInstance = new Compu

9、ter();ComputerInstance.CompName = 惠普电脑;public override void CreateCompMemory()ComputerInstance.MemorySize = 1GB;public override void CreateCompDisk()ComputerInstance.DiskSize = 160GB;/具体建造者创建IBM电脑class IBMConcreteBuilder : ComputerBuilderpublic override void CreateCompName()ComputerInstance = new Co

10、mputer();ComputerInstance.CompName = IBM电脑;public override void CreateCompMemory()ComputerInstance.MemorySize = 2G;public override void CreateCompDisk()ComputerInstance.DiskSize = 1000G;复制代码四、指挥者角色/指挥者class CreateDirector/ / 调用建造者抽象方法以生产产品/ / public void CreateComputer(ComputerBuilder compBuilder)compBuilder.CreateCompName();compBuilder.CreateCompMemory();compBuilder.CreateCompDisk();

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!