设计模式之建造者模式
2017-10-23 17:47
369 查看
定义:
建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
角色
在这样的设计模式中,有以下几个角色:
1、Builder:为创建一个产品对象的各个部件指定抽象接口。
2、ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。
3、Director:构造一个使用Builder接口的对象,指导构建过程。
4、Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
下面我们来看看建造一个变形金刚的过程:
1:建造变形金刚的头部
2:建造变形金刚的身子
3:建造变形金刚的腿
因为变形金刚有很多种类,我们今天造大黄蜂和擎天柱。
首先,我们来画一个图来表示一下:
然后我们给出代码:
builder接口:
过程:
—>new一个指导构建director实例
—>dr调用指导类方法
—>buildRobot(new一个需要创建的机器人builder(在new的时候该Builder的构造函数new对应的机器人实例))
—>buildRobot方法连续调用对应机器人Builder的create方法为我们的机器人实例赋值—>最后调用createRobot返回这个实例。
建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
角色
在这样的设计模式中,有以下几个角色:
1、Builder:为创建一个产品对象的各个部件指定抽象接口。
2、ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。
3、Director:构造一个使用Builder接口的对象,指导构建过程。
4、Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
下面我们来看看建造一个变形金刚的过程:
1:建造变形金刚的头部
2:建造变形金刚的身子
3:建造变形金刚的腿
因为变形金刚有很多种类,我们今天造大黄蜂和擎天柱。
首先,我们来画一个图来表示一下:
然后我们给出代码:
builder接口:
package Builder; public interface Builder { void createHead(); void createBody(); void createFoot(); Robot createRobot(); }
package Builder; //大黄蜂builder public class AnatomyBuilder implements Builder { Robot robot; public AnatomyBuilder() { robot = new DHFRobot(); } public void createHead() { robot.setHead("建造大黄蜂的头"); } public void createBody() { robot.setBody("建造大黄蜂的身体"); } public void createFoot() { robot.setFoot("建造大黄蜂的脚"); } public Robot createRobot() { return robot; } }
package Builder; //擎天柱builder public class OptimusPrimeBuilder implements Builder { Robot robot; public OptimusPrimeBuilder() { robot = new QTZRobot(); } public void createHead() { robot.setHead("建造擎天柱的头"); } public void createBody() { robot.setBody("建造擎天柱的身子"); } public void createFoot() { robot.setFoot("建造擎天柱的脚"); } public Robot createRobot() { return robot; } }
package Builder; //机器人产品 public class Robot { public String Head; public String Body; public String Foot; public Robot() {} public String getHead() { return Head; } public void setHead(String head) { Head = head; } public String getBody() { return Body; } public void setBody(String body) { Body = body; } public String getFoot() { return Foot; } public void setFoot(String foot) { Foot = foot; } }
package Builder; //大黄蜂机器人 public class DHFRobot extends Robot{ public DHFRobot() { System.out.println("建造了大黄蜂"); } }
package Builder; //擎天柱机器人 public class QTZRobot extends Robot{ public QTZRobot(){ System.out.println("建造了擎天柱"); } }
package Builder; //指导构建过程类 public class Director { public Robot buildRobot(Builder builder) { builder.createHead(); builder.createBody(); builder.createFoot(); return builder.createRobot(); } }
package Builder; //test方法 public class test { public static void main(String[] args) { Director dr= new Director(); Robot QTZRobot = dr.buildRobot(new OptimusPrimeBuilder()); Robot DHFRobot = dr.buildRobot(new AnatomyBuilder()); } }
过程:
—>new一个指导构建director实例
—>dr调用指导类方法
—>buildRobot(new一个需要创建的机器人builder(在new的时候该Builder的构造函数new对应的机器人实例))
—>buildRobot方法连续调用对应机器人Builder的create方法为我们的机器人实例赋值—>最后调用createRobot返回这个实例。
相关文章推荐
- 设计模式:建造者模式(Builder)
- 二十三种设计模式之创建型模式之建造者模式
- 【设计模式】建造者模式
- 浅谈springMVC中的设计模式(4)——建造者模式
- 设计模式之建造者模式
- 设计模式--对建造者模式的思考
- 23种设计模式之建造者模式(Builder)
- 设计模式—建造者模式
- 【设计模式】好菜每回味不同 --- 建造者模式
- 设计模式之(建造者模式 builder)
- 3. JavaScript 设计模式(模板模式,建造者模式)
- 设计模式之建造者模式
- 23种设计模式(2)-建造者模式
- 设计模式:建造者模式(Builder)
- 深入理解JavaScript系列(27):设计模式之建造者模式详解
- 【设计模式】建造者模式
- 10.java设计模式(读书笔记)建造者模式
- 设计模式(四)建造者模式
- 设计模式之建造者模式
- Java开发中常用的设计模式(三)---建造者模式