设计模式——建造者模式
2017-03-30 18:14
197 查看
定义
Separate the construction of a complex object from its representation so that the same construction process can create different representations.使用场景
相同方法,不同执行顺序,产生不同事件结果。多个部件或零件可以装配到一个对象中,对产生的运行结果不相同。
产品类复杂,产品类调用顺序不同产生不同效能。
UML
示例
产品类public class Product { private String param1; private String param2; private String param3; public String getParam1() { return param1; } public void setParam1(String param1) { this.param1 = param1; } public String getParam2() { return param2; } public void setParam2(String param2) { this.param2 = param2; } public String getParam3() { return param3; } public void setParam3(String param3) { this.param3 = param3; } @Override public String toString() { return "Product{" + "param1='" + param1 + '\'' + ", param2='" + param2 + '\'' + ", param3='" + param3 + '\'' + '}'; } }
抽象建造者
public abstract class Builder { public abstract Builder buildParam1(String p1); public abstract Builder buildParam2(String p2); public abstract Builder buildParam3(String p3); public abstract Product build(); }
具体建造者
public class ConcreteBuilder extends Builder { private Product product = new Product(); @Override public Builder buildParam1(String p1) { product.setParam1(p1); return this; } @Override public Builder buildParam2(String p2) { product.setParam2(p2); return this; } @Override public Builder buildParam3(String p3) { product.setParam3(p3); return this; } @Override public Product build() { return product; } }
导演类
public class Director { private Builder builder = null; public Director(Builder builder){ this.builder = builder; } public void construct(String param1 , String param2, String param3){ builder.buildParam1(param1) .buildParam2(param2) .buildParam3(param3); } }
场景类
public class Client { public static void main(String[] args){ Builder builder = new ConcreteBuilder(); Director director = new Director(builder); director.construct("1", "2", "3"); Product product = builder.build(); } }
优点
封装性,不必知道产品内部细节。容易扩展。
控制细节。 具体建造者是独立的,可对建造过程逐步细化,不对其他模块产生影响。
扩展
链式调用
产品类public class Product { private String param1; private String param2; private String param3; public static class Builder { private Product product = new Product(); public Builder buildParam1(String p1) { product.param1 = p1; return this; } public Builder buildParam2(String p2) { product.param2 = p2; return this; } public Builder buildParam3(String p3) { product.param3 = p3; return this; } public Product build() { return product; } } @Override public String toString() { return "Product{" + "param1='" + param1 + '\'' + ", param2='" + param2 + '\'' + ", param3='" + param3 + '\'' + '}'; } }
场景类
public class Client { public static void main(String[] args) { Product product = new Product.Builder() .buildParam1("param1") .buildParam2("param2") .buildParam3("param3") .build(); } }
END ~
相关文章推荐
- 设计模式学习笔记之建造者模式
- 设计模式---建造者模式
- 设计模式之 建造者模式
- 设计模式:建造者模式
- 每天一设计模式之建造者模式
- C#设计模式之建造者(Builder)模式示例源代码
- .NET设计模式(4):建造者模式(Builder Pattern)
- 设计模式笔记(九) —— 建造者模式
- 设计模式之建造者模式
- 我读设计模式之建造者模式(Builder Pattern)
- C#设计模式之建造者(Builder)模式示例源代码
- .NET设计模式(4):建造者模式(Builder Pattern)
- 设计模式c#语言描述——建造者模式、适配器模式、合成(Composite)模式
- 设计模式---建造者(Builder)模式,有关系图
- .NET设计模式(4):建造者模式(Builder Pattern)
- .NET设计模式(4):建造者模式(Builder Pattern)
- Java设计模式-----Builder建造者模式
- .NET设计模式(4):建造者模式(Builder Pattern)
- DOTA版设计模式——建造者
- C#设计模式之建造者(Builder)模式示例源代码