1.Builder模式的定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
Builder模式是一步一步创建一个复杂对象的创建性模式,它允许用户在不知道内部细节的情况下(对外隐藏实现细节),可以更精细地控制对象的构造流程,使得构建过程和部件都可以自由扩展,两者之间的耦合也降到最低
2.Builder模式的使用场景
(1)相同的方法,不同的执行顺序,产生不同的事件结果时
(2)多个部件或零件都可以装配到一个对象中(可以选择性的给对象定义某些属性,或者不定义某些属性(可能不定义的属性有默认值吧)),但是产生的运行结果又不相同时
(3)产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候使用构造者模式非常合适
(4)当初始化一个对象特别复杂时,如参数多,且很多参数都具有默认值时
3.Builder模式的实例
// 通常作为内部类出现
public static final class Builder {
private Context mContext;
private String wsUrl;
private boolean needReconnect = true;
private OkHttpClient mOkHttpClient;
public Builder(Context val) {
mContext = val;
}
public Builder wsUrl(String val) {
wsUrl = val;
return this;
}
public Builder client(OkHttpClient val) {
mOkHttpClient = val;
return this;
}
public Builder needReconnect(boolean val) {
needReconnect = val;
return this;
}
public WsManager build() {
return new WsManager(this);
}
}
其中WsManager 的构造函数的实现如下:
public WsManager(Builder builder) {
mContext = builder.mContext;
wsUrl = builder.wsUrl;
isNeedReconnect = builder.needReconnect;
mOkHttpClient = builder.mOkHttpClient;
this.mLock = new ReentrantLock();
}