设计模式

设计模式:Builder

2019-08-19  本文已影响0人  要拿出真本事了

Builder模式基本介绍
Builder模式的实现
源码中的Builder模式记录

Builder模式基本介绍

Builder模式被广泛应用,在Android SDK中经常能看到

比如最为常用到的 AlertDialog 的构建过程就是使用Builder模式

       AlertDialog.Builder builder = new AlertDialog.Builder(this)
                .setTitle("Title")
                .setIcon(R.drawable.design_patterns)
                .setMessage("Message")
                .setNegativeButton("Button", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        setTitle("click");
                    }
                });

        builder.create().show();

Builder模式意在构建过程中对外部隐藏实现细节,使得构建过程和部件可以自由扩展,降低两者的耦合度

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

适用于:

优点:

缺点:

Builder模式的实现

要实现Builder模式,就要知道为什么需要使用它

定义中显示,Builder模式的使用场景是复杂多变的构建过程,用一个实际的例子来说就是ImageLoad工具类

图片加载工具类涉及的构建过程包含线程池、缓存策略、加载策略、加载失败显示的图片等

未使用Builder模式会产生的问题在于,创建类之后需要经过一系列的set方法设置工具类必须的配置,这需要工具类提前定义一套默认的实现,因为调用者可能不会调用set类方法配置,或者在使用过程中动态的改变配置,这维护成本是很高的,且很容易报错

使用Builder模式把设置配置这一块分离出来,用户创建图片加载工具类时只需要先在Builder类中完成配置信息调用链的调用,然后调用方法根据配置信息生成工具类实例,使配置和使用分离,避免调用者在使用途中修改配置造成异常

在我看来,没有绝对的标准规定你要怎么做,Builder模式的核心实现就是把复杂的构建过程分离出配置类,使调用者可以通过配置类一次性的配置,用于生成一个或多个实例对象

配置类中包含需要配置的内容和一个静态内部类包含一系列的set方法用于设置配置信息,工具类中包含读取配置类信息创建实例的方法

源码中的Builder模式记录

AlertDialog

AlertDialog
上一篇下一篇

猜你喜欢

热点阅读