Java构建者模式
构建者模式
将一个复杂对象(初始化时需要的参数比较多)的构建与它的表示分离,使用同样的构建过程可以创建不同的表示。
- 封装在一个单独的Builder对象中创建和组装一个复杂对象的各个部分。
- 类将对象创建委托给Builder对象,而不是直接创建对象。
一个类(相同的构造过程)可以委托给不同的Builder对象来创建复杂对象的不同表示。
应用实例
Retrofit
Retrofit的部分源码
public final class Retrofit { //在包外部不能构建Retrofit的实例 Retrofit(okhttp3.Call.Factory callFactory, HttpUrl baseUrl, List<Converter.Factory> converterFactories, List<CallAdapter.Factory> callAdapterFactories, @Nullable Executor callbackExecutor, boolean validateEagerly) { this.callFactory = callFactory; this.baseUrl = baseUrl; this.converterFactories = converterFactories; // Copy+unmodifiable at call site. this.callAdapterFactories = callAdapterFactories; // Copy+unmodifiable at call site. this.callbackExecutor = callbackExecutor; this.validateEagerly = validateEagerly; } //Retrofit内部提供一个Builder类来构建Retrofit的实例 public static final class Builder { //提供多个函数用于设置Retrofit的初始化参数 public Builder baseUrl(String baseUrl) {} public Builder addConverterFactory(Converter.Factory factory) {} public Builder addCallAdapterFactory(CallAdapter.Factory factory) {} public Builder callbackExecutor(Executor executor) {} public Retrofit build() {} } }
创建Retrofit的实例
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com/") .addCallAdapterFactory(null) .addConverterFactory(null) .build();