网站大量收购闲置独家精品文档,联系QQ:2885784924

Builder设的计模式.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Builder设的计模式

Builder模式 小组成员:马茹浩,肖思宇 李明烨,阎慧玲1. 概述 在软件开发的过程中,当遇到一个“复杂的对象”的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定。2. 意图将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。3. 适用性在以下情况使用Builder模式?当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。?当构造过程必须允许被构造的对象有不同的表示时。4. 结 构此模式结构如下页上图所示。5. 构建模式的组成? 抽象建造者角色(Builder):为创建一个Product对象的各个部件指定抽象接口,以规范产品对象的各个组成成分的建造。一般而言,此角色规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。??具体建造者(ConcreteBuilder)1)实现Builder的接口以构造和装配该产品的各个部件。即实现抽象建造者角色Builder的方法。2)定义并明确它所创建的表示,即针对不同的商业逻辑,具体化复杂对象的各部分的创建3) ?提供一个检索产品的接口4)构造一个使用Builder接口的对象即在指导者的调用下创建产品实例指导者(Director):调用具体建造者角色以创建产品对象的各个部分。指导者并没有涉及具体产品类的信息,真正拥有具体产品的信息是具体建造者对象。它只负责保证对象各部分完整创建或按某种顺序创建。产品角色(Product):建造中的复杂对象。它要包含那些定义组件的类,包括将这些组件装配成产品的接口。6. 交互过程7. 效果Builder模式的主要效果:1 ) 它使你可以改变一个产品的内部表示 Builder对象提供给导向器一个构造产品的抽象接口。该接口使得生成器可以隐藏这个产品的表示和内部结构。它同时也隐藏了该产品是如何装配的。因为产品是通过抽象接口构造的,你在改变该产品的内部表示时所要做的只是定义一个新的生成器。2) 它将构造代码和表示代码分开 Builder模式通过封装一个复杂对象的创建和表示方式提高了对象的模块性。客户不需要知道定义产品内部结构的类的所有信息;这些类是不出现在Builder接口中的。每个Concrete Builder包含了创建和装配一个特定产品的所有代码。这些代码只需要写一次;然后不同的Director可以复用它以在相同部件集合的基础上构作不同的Product。3 ) 它使你可对构造过程进行更精细的控制 Builder模式与一下子就生成产品的创建型模式不同,它是在导向者的控制下一步一步构造产品的。仅当该产品完成时导向者才从生成器中取回它。因此Builder接口相比其他创建型模式能更好的反映产品的构造过程。这使你可以更精细的控制构建过程,从而能更精细的控制所得产品的内部结构。8. 例子买肯德基 ?典型的儿童餐包括一个主食,一个辅食,一杯饮料和一个玩具(例如汉堡、炸鸡、可乐和玩具车)。这些在不同的儿童餐中可以是不同的,但是组合成儿童餐的过程是相同的。 客户端:顾客,想去买一套套餐(这里面包括汉堡,可乐,薯条),可以有1号和2号两种套餐供顾客选择。?指导者角色:收银员。知道顾客想要买什么样的套餐,并告诉餐馆员工去准备套餐。?建造者角色:餐馆员工。按照收银员的要求去准备具体的套餐,分别放入汉堡,可乐,薯条等。?产品角色:最后的套餐,所有的东西放在同一个盘子里面。9. 实现指导者:收银员class?DirectorCashier?{???/**??*?收银餐馆员工返回的食物??*/??public?function?buildFood(Builder?$builder)?{???$builder-buildPart1();???$builder-buildPart2();???}??}??抽象建造者:abstract?class?Builder??{???/**??*?创建产品的第一部分??*/??public?abstract?function?buildPart1();????/**??*?创建产品的第二部分??*/??public?abstract?function?buildPart2();????/**??*??返回产品??*/??public?abstract?function?getProduct();??}??具体建造者类:/**??*?具体建造者类:餐馆员工,返回的套餐是:汉堡两个+饮料一个??*/???class?ConcreteBuilder1?extends?Builder???{???protected?$_product?=?null;//产品对象??function?__construct(){???$t

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档