Android 设计模式入门到精通之五:建造者模式(Builder)

版权声明:本文为博主原创文章,未经允许不得转载,如有问题,欢迎指正,谢谢! https://blog.csdn.net/cbk861110/article/details/88085565

设计模式项目源码请移步:https://github.com/caobaokang419/WeatherApp(欢迎Github Fork&Star,代码设计模式&框架设计实现不妥之处,请帮忙指正),谢谢!

建造者模式(Builder)

1. 概念

Separate the construction of a complex object from its representation so that the sameconstruction process can create different representations.

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

2. 应用场景

a. 相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式。
b. 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可以使用该模式。
c. 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适。
d. 在对象创建过程中会使用到系统中的一些其他对象,这些对象在产品对象的创建过程中不易得到时,也可以采用建造者模式封装该对象的创建过程。该种场景只能是一个补偿方法,因为一个对象不容易获得,而在设计阶段竟然没有发觉,而要通过创建者模式柔化创建过程,本身已经违反设计的最初目标。
 

3. 代码实践(以Retrofit&OkHttpClient的对象构建为例,具体Builder实现方式参照框架源码):

private void initRetrofit() {
    /*GoF23 设计模式 3:Builder模式*/
    mRetrofit = new Retrofit.Builder()
            .baseUrl(ApiContants.AMAP_BASE_URL)//设置服务器路径
            .client(mOkHttpClient)//设置使用okhttp网络请求
            .addConverterFactory(GsonConverterFactory.create())//添加转化库,默认是Gson
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())//添加回调库,采用RxJava
            .build();
}
private void initOkHttpClient() {
    HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
    httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    mOkHttpClient = new OkHttpClient.Builder()
            .connectTimeout(DEFAULT_CONNECT_TIME, TimeUnit.SECONDS)//连接超时时间
            .writeTimeout(DEFAULT_WRITE_TIME, TimeUnit.SECONDS)//设置写操作超时时间
            .readTimeout(DEFAULT_READ_TIME, TimeUnit.SECONDS)//设置读操作超时时间
            .addInterceptor(httpLoggingInterceptor)
            .build();
}

猜你喜欢

转载自blog.csdn.net/cbk861110/article/details/88085565
今日推荐