- 1、本文档共37页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
建造者模式优点 可以更加精细地控制产品的创建过程。将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰,也更方便使用程序来控制创建过程。 增加新的具体建造者无须修改原有类库的代码,指挥者类针对抽象建造者类编程,系统扩展方便,符合“开闭原则”。 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。 如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。 建造者模式缺点 在什么情况下使用建造者模式 需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员属性。 需要生成的产品对象的属性相互依赖,需要指定其生成顺序。 对象的创建过程独立于创建该对象的类。在建造者模式中引入了指挥者类,将创建过程封装在指挥者类中,而不在建造者类中。 隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。 与抽象工厂模式的比较 与抽象工厂模式相比,建造者模式返回一个组装好的完整产品,而抽象工厂模式返回一系列相关的产品,这些产品位于不同的产品等级结构,构成了一个产品族 如果将抽象工厂模式看成汽车配件生产工厂,生产一个产品族的产品,那么建造者模式就是一个汽车组装工厂,通过对部件的组装可以返回一辆完整的汽车 与抽象工厂模式的比较 在抽象工厂模式中,客户端实例化工厂类,然后调用工厂方法获取所需产品对象 建造者模式中,客户端可以不直接调用建造者的相关方法,而是通过指挥者类来指导如何生成对象,包括对象的组装过程和建造步骤,它侧重于一步步构造一个复杂对象,返回一个完整的对象。 练习题 对Java的资源池损坏的对象进行回收 在很多游戏软件中,地图包括天空、地面、背景等组成部分,人物角色包括人体、服装、装备等组成部分,可以使用建造者模式对其进行设计,通过不同的具体建造者创建不同类型的地图或人物。 练习题 * 比如我们把一辆汽车看成一个复合对象,是因为该汽车由多个复杂的零部件组成,这些零部件可能因为生产厂家的不同等等而不同,但这些不同的零部件最终都能被组装为一辆汽车。这些不同的零部件我们可称之为汽车的复合属性,同样可称该汽车为一个复合对象。 * 比如我们把一辆汽车看成一个复合对象,是因为该汽车由多个复杂的零部件组成,这些零部件可能因为生产厂家的不同等等而不同,但这些不同的零部件最终都能被组装为一辆汽车。这些不同的零部件我们可称之为汽车的复合属性,同样可称该汽车为一个复合对象。 * /forum/blogPost/list/5084.html * 比如我们把一辆汽车看成一个复合对象,是因为该汽车由多个复杂的零部件组成,这些零部件可能因为生产厂家的不同等等而不同,但这些不同的零部件最终都能被组装为一辆汽车。这些不同的零部件我们可称之为汽车的复合属性,同样可称该汽车为一个复合对象。 * 比如我们把一辆汽车看成一个复合对象,是因为该汽车由多个复杂的零部件组成,这些零部件可能因为生产厂家的不同等等而不同,但这些不同的零部件最终都能被组装为一辆汽车。这些不同的零部件我们可称之为汽车的复合属性,同样可称该汽车为一个复合对象。 * 比如我们把一辆汽车看成一个复合对象,是因为该汽车由多个复杂的零部件组成,这些零部件可能因为生产厂家的不同等等而不同,但这些不同的零部件最终都能被组装为一辆汽车。这些不同的零部件我们可称之为汽车的复合属性,同样可称该汽车为一个复合对象。 * 在这个模式中,Director类好像是一个多余的类,在应用中的作用好像并不大。其实它的作用是明显的。第一,它隔离了客户及生产过程。第二,它负责控 制产品的生成过程。比如你是客户,你要买汽车,你选好车型、颜色、内外装饰等,交给Director,Director告诉你去某车间取车就可以。这样其 作用大家都能体会出来了吧。 * 这里没有用接口 * * 1.客户创建Derector对象,并用它所想要的Builder对象进行配置。顾客进入KFC店要买套餐,先找到一个收银员,相当于创建了一个指导者对象。这位收银员给出两种套餐供顾客选择:1普通套餐,2黄金套餐。完成的工作如时序图中红色部分所示。[养成保存文件的习惯 web程序也不例外] package?unit3_Buider; ?? ?? import?java.util.ResourceBundle; ?? ?? public?class?Client ?? { ?? ?? ????public?Client() ?? ????{ ?? ????} ?? ?? ????/** ? ?????*?@param?args ? ?????*/?? ????public?static?void?
文档评论(0)