- 1、本文档共107页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
;一、应用场景
二、建造者设计模式
三、建造者设计模式的结构
四、建造者设计模式的实现过程;3;以上所有这些产品都是由多个部件构成的,各个部件可以灵活选择,但其创建步骤都大同小异。这类产品的创建无法用工厂模式描述,只有建造者模式可以很好地描述该类产品的创建。;二、建造者设计模式;2.建造者模式的适用场合;三、建造者设计模式的结构;2.建造者设计模式主要角色;3.具体建造者(ConcreteBuilder):实现Builder接口,完成复杂产品的各个部件的具体创建方法。
4.指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。;建造者模式包含两个很重要的部分:
(1)一个部分是Builder接口,这里是定义了如何构建各个部件,也就是知道每个部件功能如何实现,以及如何装配这些部件到产品中去;
(2)另外一个部分是Director,Director是指导如何组合来构建产品,也就是说Director负责整体的构建算法,而且通常是分步骤地来执行。;四、建造者设计模式的实现过程;2.建造者设计模式的实现过程;第一步,定义产品类;由一系列部件组成,一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。;第二步,定义抽象建造者类;给出一个抽象接口,以规范产品对象的各个组成成分的建造。一般而言,此接口独立于应用程序的商业逻辑。模式中直接创建产品对象的是具体建造者(ConcreteBuilder)角色。具体建造者类必须实现这个接口所要求的两种方法:一种是建造方法(buildPart),另一种是返还结果方法(getResult)。;第三步,定义具体建造者类;第四步,定义指挥者类(或称导演者类);指挥者类(或称导演者类)负责调用适当的建造者来组建产品,指挥者类一般不与产品类发生依赖关系,与指挥者类直接交互的是建造者类。指挥者者角色并没有产品类的具体知识,真正拥有产品类的具体知识的是具体建造者角色。;privateBuilderbuilder;
//1构造方法的方式注入builder对象
publicDirector(Builderbuilder)
{
this.builder=builder;
}
//2set方法注入builder对象
publicvoidsetBuilder(Builderbuilder)
{
this.builder=builer;
};指挥者角色是与客户端打交道的角色。指挥者将客户端创建产品的请求划分为对各个零件的建造请求,再将这些请求委派给具体建造者角色。具体建造者角色是做具体建造工作的;publicProductconstruct()
{
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
returnbuilder.getResult();
};第五步,定义客户端类;客户需要什么样的产品,交给Director,Director类注入Builder,由director的construct()方法返回产品给客户。具体建造产品的过程是construct()方法,其是通过调用concretebuilder的方法buildPartA()方法来建造产品。客户不需要知道具体的建造过程。;优点:
1、产品的建造和表示分离,实现了解耦。
2、将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰
3、增加新的具体建造者无需修改原有类库的代码,易于拓展,符合“开闭原则“。;缺点:
1、产品必须有共同点,限制了使用范围。
2、如内部变化复杂,会有很多的建造类,难以维护。;小结;;一、任务描述
二、任务分析、设计
三、任务实施
四、运行结果;30;二、任务分析、设计;实现思路:
按照典型建造者设计模式的实现过程,创建各个类。;抽象产品类Product。
具体产品类。包括:文学作品类LiteraryWorks,影视作品类FilmWorks,动漫作品类AnimationWorks
建造者接口Builder。
具体建造者类。包括:影视作品建造者类FilmWorksBuilder,文学作品建造者类LiteraryWorksBuilder,动漫作品建造者类AnimationWorksBuilder等。
指挥者类Director。
客户端类Client。;其类图如图9-1所示;三、任务实施;抽象类,封装作品名称、作者、耗资及故事情节等信息
封装setter和getter方法
重写toString方法;第二步.定义具体产品类;publicclassLiteraryWorksextends
您可能关注的文档
- 《C语言程序设计》课件——4.5实例讲解.pptx
- 《C语言程序设计》课件——7.3函数的返回值.pptx
- 《AUTOCAD》课件——项目二 平面图形基础.pptx
- 《C语言程序设计》课件——1.1C语言概述.pptx
- 《C语言程序设计》课件——1.2C程序基本结构.pptx
- 《C语言程序设计》课件——4.1算法及其表示.pptx
- 《C语言程序设计》课件——9.13用指针变量名加下标的形式访问数组.pptx
- 《C语言程序设计》课件——10.6共生体类型数据.pptx
- 《H5页面与交互动画设计》课件——H5页面的交互设计.pptx
- 《H5页面与交互动画设计》课件——H5中的动效、动画 .pptx
- 《Java高级程序设计》课件——学习情境1 Java编码规范.pptx
- 《Java高级程序设计》课件——学习情境2 接口.pptx
- 《Java高级程序设计》课件——学习情境3 Java反射机制.pptx
- 《Java高级程序设计》课件——学习情境4 泛型机制.pptx
- 《Java高级程序设计》课件——学习情境5 Java序列化机制.pptx
- 《Java高级程序设计》课件——学习情境6 Java多线程与同步机制.pptx
- 《Java高级程序设计》课件——学习情境7 Java编程.pptx
- 《LED封装应用技术》课件——二合一编带机简介.pptx
- 《LED封装应用技术》课件——发展简史.pptx
- 《LED封装应用技术》课件——固晶机各组件的保养和注意事项.pptx
文档评论(0)