设计模式03-创建型模式-2.pdf
《设计模式03-创建型模式-2.pdf》由会员分享,可在线阅读,更多相关《设计模式03-创建型模式-2.pdf(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、设计模式(3-2)创建型设计模式湖北汽车工业学院计算机工程系湖北汽车工业学院计算机工程系主要内容1.建造者模式(了解)建造者模式(了解)2.原型模式(了解)原型模式(了解)3.创建型模式小结(重点)创建型模式小结(重点)四、建造者模式(四、建造者模式(Builder Pattern)4.1、背景背景1:对象有一些重要的属性,在没有给这些属性赋值之前,对象不能作为一个完整的产品使用。如一个电子邮件,有发件人地址、收件人地址、主题、内容、附录等部分,而在最起码的收件人地址未被赋值之前,这个电子邮件不能发出。背景2:对象的一些属性必须按照某个顺序赋值才有意义。在某个属性没有被赋值之前,另一个属性无法
2、被赋值。即属性本身的建造涉及到复杂的商业逻辑。如果把对象看作一个有待建造的产品,则对象的属性就相当于产品的零件,建造产品的过程就是组合零件的过程。-如果组合零件的过程很复杂,则“零件”的组合过程可以被“外部化”到一个称作建造者的对象里,建造者返还给客户端的是一个全部零件都建造完毕的产品对象。在软件系统中:-有时候面临着“一个复杂对象”的创建工作,该对象通常由各个部分的子对象用一定的算法构成;由于需求的变化,复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。如何应对这种变化?提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随
3、着需求改变而改变?4.2、Builder模式的结构4.3、角色、角色建造者建造者(Builder):-指定一个共同接口,用以创建一个Product对象的各个组成成分。具体建造者具体建造者(Concrete Builder):-实现Builder角色提供的接口,以构造和装配该产品的各个部件;-定义并追踪它所创建的对象;-提供访问所创建对象的方法。指挥者指挥者(Director):-调用建造者接口以创建产品对象。产品产品(Product):-表示被构造的复杂对象。-具体创建者创建该产品的内部表示,并定义它的装配过程。-Product包含定义组成部件的类,也定义将这些部件装配成最终产品的接口。指挥者
4、处于与客户端打交道的角色。指挥者角色将客户端创建产品的请求划分为对各个零件的建造请求,再将这些请求委派给具体建造者角色。具体建造者角色是做具体建造工作的,但却不为客户端所知。4.3、意图、意图-将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建对象的不同表示。4.4、适用性、适用性-需要生成的产品对象有复杂的内部结构。-需要生成的产品对象的属性相互依赖。-在对象创建过程中会使用到系统中的一些其它对象,这些对象在产品对象的创建过程中不易得到。4.6、协作客户创建Director对象,并用所想要的Builder对象对其进行配置。产品各部件生成后Director会通知Builder。Bu
5、ilder处理Director的请求,并将部件添加到产品中。客户从Builder中检索产品。4.7、活动序列例如:建造一间小屋以供出租。建房的顺序是先砌墙,再盖屋顶,最后安装门。4.8、KFC快餐店制作儿童餐。-典型的儿童餐包括一个主食,一个辅食,一杯饮料和一个玩具(例如汉堡、炸鸡、可乐和玩具车)。-这些在不同的儿童餐中可以是不同的,但是组合成儿童餐的过程是相同的。柜台的员工直接把主食,辅食和玩具放在一起。这些是放在一个袋子中的。饮料被倒入杯中,放在袋子外边。客户端:顾客。想去买一套套餐(这里面包括汉堡,可乐,薯条),可以有1号和2号两种套餐供顾客选择。指导者角色:收银员。知道顾客想要买什么样
6、的套餐,并告诉餐馆员工去准备套餐。建造者角色:餐馆员工。按照收银员的要求去准备具体的套餐,分别放入汉堡,可乐,薯条等。产品角色:最后的套餐,所有的东西放在同一个盘子里面。试用Builder模式模拟在KFC买餐过程。4.9 创建两个不同的容器,内置不同的组件创建两个不同的容器,内置不同的组件。分析两个对象均有三个属性:按钮、标签和文本框;但三个属性的外观、创建方式以及排序方式不一样。4.10、效果1)允许改变一个产品的内部表示。-Builder对象提供给导演一个构造产品的抽象接口,该接口使得生成器不仅可以隐藏这个产品的表示和内部结构,而且可以隐藏该产品是如何装配的。-因为产品是通过抽象接口构造的
7、,所以改变该产品的内部表示只是定义一个新的生成器。2)将构造代码和表示代码分开。-Builder模式通过封装一个复杂对象的创建和表示方式提高了对象的模块性。-客户不需要知道定义产品内部结构的类的所有信息;这些类是不出现在Builder接口中的。每个ConcreteBuilder包含了创建和装配一个特定产品的所有代码。这些代码只需要写一次;然后不同的Director可以复用它以在相同部件集合的基础上构作不同的Product。3)可对构造过程进行更精细的控制。-Builder模式与一下子就生成产品的创建型模式不同,它是在导向者的控制下一步一步构造产品的。仅当该产品完成时导向者才从生成器中取回它。-
8、Builder接口相比其他创建型模式能更好的反映产品的构造过程。这使得可以更精细的控制构建过程,从而能更精细的控制所得产品的内部结构。4.11、如下是个月历窗口,分别显示中、如下是个月历窗口,分别显示中国样式和美国样式的月历。分析它们有国样式和美国样式的月历。分析它们有哪些共同属性?哪些共同属性?五、原型五、原型PROTOTYPE模式模式5.1、意图-所谓原型(protype),是目标系系统的一个可执行模型或引导性的版本;-原型模式用原型实例指定所创建对象,并且通过复制这个实例来创建新的对象。-Java中的克隆接口Clonable支持原型模式设计。5.2、结构角色:-客户(Client):提出
9、创建对象的请求。-抽象原型(Prototype):这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体原型类所需的共同接口,特别是提供一个“复制”原型类的方法。C#提供ICloneable接口支持该角色,Java提供Clonable接口支持该角色。-具体原型(Concrete Prototype)此角色实现抽象原型所要求的接口。是要通过copy方法得到的对象的模版。协作-客户请求一个原型克隆自身。理解:用Java语言实现一个类,让该类支持通过复制自身的方法获取另一个对象,只要继承Cloneable即可。5.3、适用性-当一个系统应该独立于它的产品创建,构成和表示时;-当要实例化的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 03 创建
限制150内