Java设计模式——建造者模式
2018-02-06 17:15
176 查看
概述
建造者(Builder)模式,又称为生成器模式。它是将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。当采用了建造者模式,用户就只需要指定需要建造的类型就可以得到想要的最终结果,至于具体的构建过程和构建细节不需要过多知晓。UML
Director:指挥者,主要负责调度Builder接口对象,构建成型的产品。
Builder:抽象接口,封装了Product各个部件的生产方法和工序。
ConcreteBuilder:具体的构建者,它实现了Builder接口,执行具体的构建过程。
Product:具体的产品类。
代码举例
/** * 角色:Product * 产品类 */ public class Product { ArrayList<String> parts = new ArrayList<>(); public void add(String part) { parts.add(part); } public void show() { for (String part : parts) { System.out.println(part); } } }
/** * 角色:Builder * 建造者基类 */ public interface Builder { void buildPartA(); void buildPartB(); void buildPartC(); Product getFinalProduct(); }
/** * 角色:ConcreteBuilder * 具体的建造者 */ public class ConcreteBuilderA implements Builder { private Product product; public ConcreteBuilderA() { product = new Product(); } @Override public void buildPartA() { product.add("part a"); } @Override public void buildPartB() { product.add("part b"); } @Override public void buildPartC() { product.add("part c"); } @Override public Product getFinalProduct() { return product; } }
/** * 角色:ConcreteBuilder * 具体的建造者 */ public class ConcreteBuilderB implements Builder { private Product product; public ConcreteBuilderB() { product = new Product(); } @Override public void buildPartA() { product.add("part x"); } @Override public void buildPartB() { product.add("part y"); } @Override public void buildPartC() { product.add("part z"); } @Override public Product getFinalProduct() { return product; } }
/** * 角色:ConcreteBuilder * 具体的建造者 */ public class ConcreteBuilderC implements Builder { private Product product; public ConcreteBuilderC() { product = new Product(); } @Override public void buildPartA() { product.add("part one"); } @Override public void buildPartB() { product.add("part two"); } @Override public void buildPartC() { product.add("part three"); } @Override public Product getFinalProduct() { return product; } }
/** * 角色:Director * 指挥者 */ public class Director { public void Construct(Builder builder) { builder.buildPartA(); builder.buildPartB(); builder.buildPartC(); } }
public class Main { public static void main(String[] args) { Director director = new Director(); Builder builderA = new ConcreteBuilderA(); Builder builderB = new ConcreteBuilderB(); Builder builderC = new ConcreteBuilderC(); director.Construct(builderA); director.Construct(builderB); director.Construct(builderC); Product productA = builderA.getFinalProduct(); Product productB = builderB.getFinalProduct(); Product productC = builderC.getFinalProduct(); productA.show(); productB.show(); productC.show(); } }
总结
建造者的思维模式是将构建的方法和具体的构建操作分离,Builder类提供具体的构建方法,Director类来负责调度和下达构建指令。这样的话,可以将产品的结构和产品的零件的建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造者零件的责任分割开来,达到责任划分和封装的目的。相关文章推荐
- Java设计模式--建造者模式【Builder Pattern】
- java 设计模式之建造者模式(3)
- java设计模式之建造者模式
- java设计模式之建造者模式
- Java设计模式之建造者模式
- java设计模式_建造者模式
- java设计模式之建造者模式
- 我所了解的java设计模式之建造者模式
- Java设计模式-建造者模式
- Java设计模式之建造者模式
- java设计模式-Builder建造者模式
- 走穿java23种设计模式-4建造者模式详解
- Java设计模式-----Builder建造者模式
- Java 设计模式之建造者模式的详解(创建模式)
- 深入解析Java的设计模式编程中建造者模式的运用
- Java设计模式(十):建造者模式
- 【Java设计模式03】——建造者模式
- java23种常用设计模式之建造者模式(Builder)升级版实例
- Java设计模式04--建造者(生成器)模式
- JAVA设计模式(六)——建造者模式