设计模式 建造者模式

设计模式 建造者模式

ID:19783143

大小:1.34 MB

页数:17页

时间:2018-10-06

设计模式 建造者模式_第1页
设计模式 建造者模式_第2页
设计模式 建造者模式_第3页
设计模式 建造者模式_第4页
设计模式 建造者模式_第5页
资源描述:

《设计模式 建造者模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、创建型设计模式-之建造者模式创建型模式有:1工厂模式2抽象工厂模式3建造者模式4单件模式5原型模式建造者(Builder)模式一、建造者模式的由来二、建造者模式的意图及适用性三、建造者模式的结构四、应用举例五、效果分析1建造者模式的由来在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。1建造者模式的由来在实际生活中,也有这样的例子:譬如一个房屋的构建。创建过程基本不变,但是门窗等组件却是易变的。1建造者模式

2、的由来如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。2建造者模式的意图和适用性模式的意图将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。2建造者模式的意图和适用性以下情况可以使用建造者模式:1.需要生成的产品对象有复杂的内部结构。2.创建复杂对象的算法稳定,或建造者模式可以强迫生成一定的顺序。3.当构造过程允许被构造的对象有不同的表示时。3建造者模式的结构和参与者建造者模式结构图3建造者模式的结构和参

3、与者1)Builder为创建一个Product对象的各个部件指定抽象接口。2)ConcreteBuilder实现Builder的接口以构造和装配该产品的各个部件。定义并明确它所创建的表示。提供一个检索产品的接口3)Director构造一个使用Builder接口的对象。4)Product表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。包含定义组成部件的类,包括将这些部件装配成最终产品的接口。4应用举例设计游戏场景中的房屋假设房屋由五个部分组成:地板、墙壁、窗户、门和天花板。构建一个房屋的步骤

4、是一定的,而具体的组件(门、窗等)是易变的。采用建造者模式分离易变组件和稳定的构建过程。3建造者模式的结构和参与者建造者模式结构图过程不变部件易变4应用举例publicabstractclassHouse//定义一个房屋抽象类{}publicabstractclassBuilder//这一部分是易变的{publicabstractvoidBuildFloor();//地板publicabstractvoidBuildDoor();//门publicabstractvoidBuildWindows();//窗户publicabstra

5、ctvoidBuildWall();//墙壁publicabstractvoidBuildHouseCeiling()//天花板publicabstractHouseGetHouse();}4应用举例publicabstractclassGameManager//这一部分的方法是稳定的{publicstaticHouseCreateHouse(Builderbuilder){builder.BuildFloor();builder.BuildDoor();builder.Buildwall();builder.BuildWindow

6、s();builder.BuildHouseCeiling();returnbuilder.GetHouse();}}4应用举例publicclassRomanHouseextendsHouse{}publicclassRomanHouseBuilderextendsBuilder{publicoverridevoidBuildDoor(){}publicoverridevoidBuildFloor(){}publicoverridevoidBuildWindows(){}publicoverridevoidBuildWall(){

7、}publicoverridevoidBuildHouseCeiling(){}publicoverrideHouseGetHouse(){}}应用举例classApp{publicstaticvoidmain(){Househouse=GameManager.CreateHouse(newRomanHouseBuilder());}}5效果分析1.建造者模式的使用使得产品的内部表象可以独立的变化。使用建造者模式可以使客户端不必知道产品内部组成的细节。2.每一个Builder都相对独立,而与其它的Builder无关。可使对构造过程更

8、加精细控制。4.将构建代码和表示代码分开。5.建造者模式的缺点在于难于应付“分步骤构建算法”的需求变动。

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

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

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