读书笔记_java设计模式深入研究 第四章 生成器模式 (建造者模式) Builder
1,生成器的模式的意图在于将一个复杂的构建与其标识相互分离,是的同样的构建过程可以创建不同的表示。建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成不同的内部表象的产品。
2,生成器模式UML图:
-1,建造者IBuilder角色:给出一个抽象接口,以规范产品对象各个组成成分的建造。一般而言,此接口独立于应用程序的商业逻辑。可以在接口中只定义一个总的建造方法,再在子类总实现。这样子可以实现操作的隔离。
-2,具体建造者Builder角色:此角色实现建造者接口,此角色主要完成IBuilder中的各个接口,在各个建造步骤完成后,提供一个组合方法,返回产品实例。
-3,指导者Director角色:此角色调用具体建造者以创建产品对象。
-4,产品Product角色:对应业务产品。
3,具体代码如下:
/**** @(#) IBuilder.java* @Package pattern.chp04.builder** Copyright © JING Corporation. All rights reserved.**/package pattern.chp04.builder;/*** 类描述:建造者接口** @author: Jing* @version $Id: Exp$** History: Dec 19, 2014 11:11:16 AM Jing Created.**/public interface IBuilder {/**** 方法说明:生成产品对象** Author: Jing* Create Date: Dec 19, 2014 11:11:56 AM** @return* @return Product*/public Product create();}/**** @(#) BuildProduct.java* @Package pattern.chp04.builder** Copyright © JING Corporation. All rights reserved.**/package pattern.chp04.builder;/*** 类描述:具体产品生成** @author: Jing* @version $Id: Exp$** History: Dec 19, 2014 11:14:37 AM Jing Created.**/public class BuildProduct implements IBuilder {Product model = new Product();public Product create() {createScreen();createMainframe();return model;}/**** 方法说明:生成屏幕** Author: Jing Create Date: Dec 19, 2014 11:15:28 AM** @return void*/public void createScreen() {model.setScreen("Screen Product");}/**** 方法说明:生成主机** Author: Jing Create Date: Dec 19, 2014 11:16:12 AM** @return void*/public void createMainframe() {model.setMainframe("Mainframe Product");}}/**** @(#) Product.java* @Package pattern.chp04.builder** Copyright © JING Corporation. All rights reserved.**/package pattern.chp04.builder;/*** 类描述:产品类,电脑** @author: Jing* @version $Id: Exp$** History: Dec 19, 2014 11:12:12 AM Jing Created.**/public class Product {/*** 屏幕*/private String screen;/*** 主机*/private String mainframe;/*** @return the screen*/public String getScreen() {return screen;}/*** @param screen* the screen to set*/public void setScreen(String screen) {this.screen = screen;}/*** @return the mainframe*/public String getMainframe() {return mainframe;}/*** @param mainframe* the mainframe to set*/public void setMainframe(String mainframe) {this.mainframe = mainframe;}}/**** @(#) Director.java* @Package pattern.chp04.builder** Copyright © JING Corporation. All rights reserved.**/package pattern.chp04.builder;/*** 类描述:产品生成指导类** @author: Jing* @version $Id: Exp$** History: Dec 19, 2014 11:17:07 AM Jing Created.**/public class Director {private IBuilder builder;public Director(IBuilder builder) {this.builder = builder;}/**** 方法说明:构建产品** Author: Jing* Create Date: Dec 19, 2014 11:18:31 AM** @return* @return Product*/public Product build(){return builder.create();}}
4, 在什么情况下使用建造者模式
以下情况应当使用建造者模式:
1、 需要生成的产品对象有复杂的内部结构。
2、 需要生成的产品对象的属性相互依赖,建造者模式可以强迫生成顺序。
3、 在对象创建过程中会使用到系统中的一些其它对象,这些对象在产品对象的创建过程中不易得到。
使用建造者模式主要有以下效果:
1、 建造模式的使用使得产品的内部表象可以独立的变化。使用建造者模式可以使客户端不必知道产品内部组成的细节。
2、 每一个Builder都相对独立,而与其它的Builder无关。
3、 模式所建造的最终产品更易于控制。
欢迎转载,但转载请注明原文链接[博客园: http://www.cnblogs.com/jingLongJun/]
[CSDN博客:http://blog.csdn.net/mergades]。
如相关博文涉及到版权问题,请联系本人。
[CSDN博客:http://blog.csdn.net/mergades]。
如相关博文涉及到版权问题,请联系本人。

浙公网安备 33010602011771号