设计模式之构建者模式(Builder)
2018-03-22 17:37
225 查看
Builder设计模式
Demo地址
https://github.com/rocky123shine/Builder概念
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder使用场景
相同的方法,不同的执行顺序,产生不同的事件结果时;多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时;
产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效果,这个时候使用建造者模式非常合适;
当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时。
Builder实现和使用
Builder实现
生成一个类A,内置一个静态类,在A中声明静态类的对象A类构造方法私有化 参数为内部静态类的对象,给A中的对象赋值
在内部静态类中生成所有需要的属性,生成set方法,set方法返回内部类对象
在内部类中提供bulid方法 目的是提供A的对象
public class A { private Builder builder; private A(Builder builder) { this.builder = builder; } public static class Builder { private String name; private String number; private String price; public Builder setName(String name) { this.name = name; return this; } public Builder setNumber(String number) { this.number = number; return this; } public Builder setPrice(String price) { this.price = price; return this; } public A build() { return new A(this); } } ... }
Builder使用
A.Builder builder = new A.Builder(); A a = builder.setName("Apple").setNumber("IphoneX").setPrice("6800").build();
这样的话把复杂的参数通过链式设置完成,避免了参数过于复杂且易乱,分不清谁是谁的问题,最后返回A的对象,这样就可以操作A中的其他方法了
Builder实际应用举例
我这里就写了一个简单的Builder,下面我举几个使用Builder的框架,以便我们深入了解和学习Builder。例如:OKHttp、Retrofit、RxJava、ImageLoader、Volley、AlertDialog等等…都使用了Builder。
这里我们对AlertDialog是最熟悉不过的,大家可以模仿一下源码写个Demo,这样会对Builder设计模式有一个更加深刻的认识
相关文章推荐
- 常用设计模式(一)Builder(构建者)模式
- Java设计模式--构建者模式(Builder)
- 设计模式——构建者模式(Builder)
- Java/Android 构建者(Builder)设计模式(又叫生成器模式)
- 设计模式4 - 构建者模式Builder Design Pattern
- 设计模式中的构建者Builder模式&c++
- 设计模式之构建者Builder模式
- 设计模式学习之构建者模式(Builder)
- 设计模式之构建者模式(Builder):初步理解
- 设计模式——__构建者模式 Builder模式
- 设计模式-Builder构建者模式
- 设计模式之构建者(Builder)模式
- 设计模式---建造者模式(Builder)模式
- C#设计模式之建造者(Builder)模式示例源代码
- HeadFirst 设计模式学习笔记17--建筑者(Builder)模式拾零
- Builder设计模式原理
- 常见设计模式的解析和实现(C++)之三-Builder模式
- Android开发中无处不在的设计模式——Builder模式
- 设计模式之建造者模式(Builder)
- 设计模式 建造者模式(Builder)