欢迎来到天天文库
浏览记录
ID:62126101
大小:3.11 MB
页数:50页
时间:2021-04-17
《最新建造者模式.ppt课件ppt.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、建造者模式.ppt大纲建造者模式概述建造者模式的结构与实现建造者模式的应用实例指挥者类的深入讨论建造者模式的优缺点与适用环境建造者模式概述复杂对象复杂对象(汽车)示意图建造者模式的结构与实现建造者模式的结构建造者模式的结构与实现建造者模式的结构建造者模式包含以下4个角色:Builder(抽象建造者)ConcreteBuilder(具体建造者)Product(产品)Director(指挥者)建造者模式的结构与实现建造者模式的实现典型的复杂对象类代码:classProduct{privatestringpartA;//定义部件,部件可以是任意类型,包括值类型和引用类型
2、privatestringpartB;privatestringpartC;publicstringPartA{get{returnpartA;}set{partA=value;}}publicstringPartB{get{returnpartB;}set{partB=value;}}publicstringPartC{get{returnpartC;}set{partC=value;}}}建造者模式的结构与实现建造者模式的实现典型的抽象建造者类代码:abstractclassBuilder{//创建产品对象protectedProductproduct=new
3、Product();publicabstractvoidBuildPartA();publicabstractvoidBuildPartB();publicabstractvoidBuildPartC();//返回产品对象publicProductGetResult(){returnproduct;}}建造者模式的结构与实现建造者模式的实现典型的具体建造者类代码:classConcreteBuilder1:Builder{publicoverridevoidBuildPartA(){product.PartA="A1";}publicoverridevoidBui
4、ldPartB(){product.PartB="B1";}publicoverridevoidBuildPartC(){product.PartC="C1";}}建造者模式的结构与实现建造者模式的实现典型的指挥者类代码:classDirector{privateBuilderbuilder;publicDirector(Builderbuilder){this.builder=builder;}publicvoidSetBuilder(Builderbuilder){this.builder=builder;}//产品构建与组装方法publicProductCo
5、nstruct(){builder.BuildPartA();builder.BuildPartB();builder.BuildPartC();returnbuilder.GetResult();}}建造者模式的结构与实现建造者模式的实现客户类代码片段:……Builderbuilder=newConcreteBuilder1();//可通过配置文件实现Directordirector=newDirector(builder);Productproduct=director.Construct();……Builder模式例子创建水杯问题将创建的细节暴露给了用户如何
6、解决?需要一个指挥家(Director),来封装创建各个步骤从而隔离用户与创建者的联系此处也可以将返回的结果Cup再返回出去,由用户来Show建造者模式的应用实例结果及分析如果需要更换具体角色建造者,只需要修改配置文件当需要增加新的具体角色建造者时,只需将新增具体角色建造者作为抽象角色建造者的子类,然后修改配置文件即可,原有代码无须修改,完全符合开闭原则建造者模式的优缺点与适用环境模式优点客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象每一个具体建造者都相对独立,与其他的具体建造者无关,因此可以很方便地替换
7、具体建造者或增加新的具体建造者,扩展方便,符合开闭原则可以更加精细地控制产品的创建过程建造者模式的优缺点与适用环境模式缺点建造者模式所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,不适合使用建造者模式,因此其使用范围受到一定的限制如果产品的内部变化复杂,可能会需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大,增加了系统的理解难度和运行成本建造者模式的优缺点与适用环境模式适用环境需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员变量需要生成的产品对象的属性相互依赖,需要指定其生成顺序对象的创建过程独立于创建该对象的
8、类。在建造
此文档下载收益归作者所有