Java设计模式之建造者模式
2017-12-18 18:07
453 查看
建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
产品类,由多个部件组成:
public class Product {//产品类,由多个部件组成
List<String> parts = new ArrayList<String>();
// 添加产品部件
public void add(String part) {
parts.add(part);
}
// 列举所有的产品部件
public void show() {
System.out.println("---产品 创建---");
for (String part : parts) {
System.out.println(part);
}
}
}创建一个Product对象的各个部件指定的抽象类接口:
public abstract class Builder {
public abstract void buildPartA();
public abstract void buildPartB();
public abstract Product getBuildResult();
}具体建造者类:
public class ConcreteBuilder1 extends Builder {//具体建造者类
private Product product = new Product();
@Override
public void buildPartA() {
product.add("部件A");
}
@Override
public void buildPartB() {
product.add("部件B");
}
@Override
public Product getBuildResult() {
return product;
}
}
public class Director {//指挥者类,用来指挥建造过程
public void construct(Builder builder) {
builder.buildPartA();
builder.buildPartB();
}
}建造客户端:
---产品 创建---
部件A
部件B
---产品 创建---
部件X
部件Y建造者模式适用场合:它主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部构建通常面临着复杂的变化。建造者模式的好处就是使得建造代码与表示代码分离,由于构建者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。
产品类,由多个部件组成:
public class Product {//产品类,由多个部件组成
List<String> parts = new ArrayList<String>();
// 添加产品部件
public void add(String part) {
parts.add(part);
}
// 列举所有的产品部件
public void show() {
System.out.println("---产品 创建---");
for (String part : parts) {
System.out.println(part);
}
}
}创建一个Product对象的各个部件指定的抽象类接口:
public abstract class Builder {
public abstract void buildPartA();
public abstract void buildPartB();
public abstract Product getBuildResult();
}具体建造者类:
public class ConcreteBuilder1 extends Builder {//具体建造者类
private Product product = new Product();
@Override
public void buildPartA() {
product.add("部件A");
}
@Override
public void buildPartB() {
product.add("部件B");
}
@Override
public Product getBuildResult() {
return product;
}
}
public class ConcreteBuilder2 extends Builder {//具体建造者类,建造的对象时Product,通过build使Product完善 private Product product = new Product(); @Override public void buildPartA() { product.add("部件X"); } @Override public void buildPartB() { product.add("部件Y"); } @Override public Product getBuildResult() { return product; } }指挥者类,用来指挥建造过程:
public class Director {//指挥者类,用来指挥建造过程
public void construct(Builder builder) {
builder.buildPartA();
builder.buildPartB();
}
}建造客户端:
public class BuilderClient {//建造客户端 public static void main(String[] args) { Director director = new Director(); Builder builder1 = new ConcreteBuilder1(); Builder builder2 = new ConcreteBuilder2(); director.construct(builder1); Product product1 = builder1.getBuildResult(); product1.show(); director.construct(builder2); Product product2 = builder2.getBuildResult(); product2.show(); } }运行结果:
---产品 创建---
部件A
部件B
---产品 创建---
部件X
部件Y建造者模式适用场合:它主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部构建通常面临着复杂的变化。建造者模式的好处就是使得建造代码与表示代码分离,由于构建者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。
相关文章推荐
- java设计模式之建造者模式
- java设计模式之建造者模式(生成器模式)最好的例子。
- Java开发中常用的设计模式(三)---建造者模式
- Java设计模式之建造者模式
- java设计模式之建造者模式
- Java设计模式之七:建造者模式
- 深入解析Java的设计模式编程中建造者模式的运用
- Java学习笔记---设计模式之建造者模式(一)
- java设计模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,。 行为型模式,共十一种:策略模式、模板方法)
- java设计模式—建造者模式
- java设计模式3--建造者模式
- java 设计模式 建造者模式
- Java 设计模式情景分析——建造者模式
- Java23种设计模式案例:建造者模式(builder)
- 设计模式(JAVA)-------建造者模式
- JAVA开发的23种设计模式之 --- 建造者模式
- java设计模式之建造者模式
- Java设计模式之-建造者模式
- Android的开发之&java23中设计模式------建造者模式
- JAVA设计模式之【建造者模式】