收藏 分销(赏)

Builder模式.ppt

上传人:精**** 文档编号:2077795 上传时间:2024-05-15 格式:PPT 页数:12 大小:206KB
下载 相关 举报
Builder模式.ppt_第1页
第1页 / 共12页
Builder模式.ppt_第2页
第2页 / 共12页
Builder模式.ppt_第3页
第3页 / 共12页
Builder模式.ppt_第4页
第4页 / 共12页
Builder模式.ppt_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、Builder(生成器)模式u解决的是哪一类问题解决的是哪一类问题【Why】u什么是什么是Builder模式模式【What】u如何解决这类问题如何解决这类问题【How】uBuilder模式的使用条件模式的使用条件【适用性适用性】uBuilder模式的结构及实现模式的结构及实现1精选课件导致问题的原因:用户需求的变化导致问题的原因:用户需求的变化(面向对面向对象的思想的优点就是能应对需求变化象的思想的优点就是能应对需求变化)针对的是一个复杂的对象针对的是一个复杂的对象(它是由很多的子它是由很多的子对象组成的,比如:对象组成的,比如:House对象对象),复杂对象的,复杂对象的各个部分相对变化要剧

2、烈,但这些部分的算法各个部分相对变化要剧烈,但这些部分的算法的组合相对是稳定的。的组合相对是稳定的。Builder(生成器)模式解决的是哪一类问题?解决的是哪一类问题?2精选课件Builder(生成器)模式意图意图将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以构建不同的表示。构建不同的表示。把不变与变得东西隔离开。把不变与变得东西隔离开。3精选课件Builder(生成器)模式简单地说,就好象我要一座房子住,可是我不知简单地说,就好象我要一座房子住,可是我不知道怎么盖,也不知道怎么样设计,道怎么盖,也不知道怎么样设计,于是我需

3、要找一于是我需要找一帮民工,他们会砌墙,建门等,还得找个设计师,帮民工,他们会砌墙,建门等,还得找个设计师,他知道怎么设计。当然,还要确保民工听设计师的他知道怎么设计。当然,还要确保民工听设计师的领导,而设计师本身不干活,光是下命令,这里砌领导,而设计师本身不干活,光是下命令,这里砌一堵墙,这里砌一扇门,这样民工开始建设,最后,一堵墙,这里砌一扇门,这样民工开始建设,最后,我可以向民工要房子了。在这个过程中,设计师是我可以向民工要房子了。在这个过程中,设计师是什么也没有,除了他在脑子里的设计和命令,所以什么也没有,除了他在脑子里的设计和命令,所以要房子也是跟民工要。要房子也是跟民工要。4精选课

4、件Builder(生成器)模式适用性适用性当同时满足以下情况的时候可以使用当同时满足以下情况的时候可以使用Builder模式:模式:a.当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时。方式时。b.当构造过程必须允许构造的对象有不同的表示时(不同风格的房子)。当构造过程必须允许构造的对象有不同的表示时(不同风格的房子)。5精选课件Builder(生成器)模式结构结构注意:注意:导向器导向器(Director)是调用是调用BuildPart()方法,来将不同方法,来将不同部件部件(Part)组合到目标组合到目标Prod

5、uct中中的。如果只是组合不同数量的现有部件,则不用定义新的如果只是组合不同数量的现有部件,则不用定义新的ConcreteBuilder。6精选课件Builder(生成器)模式参与者参与者Builder:为创建一个为创建一个Product对象的各个部件指定抽象接口。对象的各个部件指定抽象接口。ConcreteBuilder:实现实现Builder的接口以构造和装配该产品的各个部件。的接口以构造和装配该产品的各个部件。Director:构造一个使用构造一个使用Builder接口的对象。接口的对象。Product:表示被构造的复杂对象。表示被构造的复杂对象。7精选课件Builder(生成器)模式协

6、作协作8精选课件Builder(生成器)模式建造不同风格的房子:建造不同风格的房子:9精选课件Builder(生成器)模式项目导航项目导航10精选课件Builder(生成器)模式回顾:回顾:Builder模式的核心思想:模式的核心思想:1.将一个将一个“复杂对象的构建算法复杂对象的构建算法”与它的与它的“部件及组装方式部件及组装方式”分离,使得分离,使得构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式。同的表示,不同的构建过程可以复用相同的部件组装方式。2.抽象的抽

7、象的Builder类,为导向者可能要求创建的每一个构件类,为导向者可能要求创建的每一个构件(Part)定义定义一个操作一个操作(接口接口)。这些操作缺省情况下什么都不做。一个。这些操作缺省情况下什么都不做。一个ConcreteBuilder类对它所感兴趣的构建重定义这些操作。每个类对它所感兴趣的构建重定义这些操作。每个ConcreteBuilder包含了创建包含了创建和装配一个特定产品的所有代码(注意:和装配一个特定产品的所有代码(注意:ConcreteBuilder只是提供了使用只是提供了使用部件装配产品的操作接口,但不提供具体的装配算法,装配算法在导向器部件装配产品的操作接口,但不提供具体

8、的装配算法,装配算法在导向器Director中定义)。这些代码只需要写一次;然后不同的中定义)。这些代码只需要写一次;然后不同的Director可以复可以复用它,以在相同部件集合的基础上构建不同的用它,以在相同部件集合的基础上构建不同的Product。11精选课件Builder(生成器)模式回顾:回顾:Builder模式的核心思想:模式的核心思想:回过头再来看,类图结构中对回过头再来看,类图结构中对Director的注释,为什么不是一句的注释,为什么不是一句builder-BuildPart()就够了,为什么要有这个循环呢?就够了,为什么要有这个循环呢?BuildPart方方法封装了创建法封装

9、了创建Part、并组装到、并组装到Product中的操作,循环调用多次时,中的操作,循环调用多次时,可以反复复用可以反复复用BuildPart操作,让目标操作,让目标Product聚合多个聚合多个Part。另外,需要指出的一点:单纯的另外,需要指出的一点:单纯的Builder模式中,模式中,“不同不同Product类型类型”的组成部件之间,不能进行组合或替换。譬如上面的两个示例的组成部件之间,不能进行组合或替换。譬如上面的两个示例中:组成中国式的中:组成中国式的Door、Wall、Floor、Windows,不允许与组成罗,不允许与组成罗马式的马式的Door、Wall、Floor、Windows进行组合创建新的进行组合创建新的House,也,也就是说这两者之间的部件不能兼容或替换。就是说这两者之间的部件不能兼容或替换。12精选课件

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服