设计模式(三) Builder建造者模式
Builder建造者模式
Builder建造者模式,主要用于构建一个复杂的对象,将对象的构建与表示分离,在不使用建造者模式的时候,我们构建一个复杂的对象,可能构造方法的参数都很七八个,如果是可选参数,那么可能会重载多个构造方法,当用户使用该类的时候,需要仔细观察,需要哪个构造方法,才能满足需求。使用Builder建造者模式就可以解决这个痛点
一、Android源码之AlertDialog
AlertDialog 内部就是使用的建造者模式,核心类包括如下:
- AlertDialog
- AlertDialog.Builder
- AlertController
- AlertController.AlertParams
AlertDialog的基本使用:
1 | AlertDialog.Builder(this)//1 |
分析1:我们知道Builder是AlertDialog的静态内部类,Builder的构造方法需要传入上下文Context,Context主要用于初始化LayoutInflater
1 | public Builder setTitle(CharSequence title) { |
分析2:可以看到,设置的标题被保存到Builder的变量P中,这个P(AlertParams)的作用就是用于存储整个对话框构建需要的信息
1 | public AlertDialog show() { |
分析3:Builder的show方法,内部调用create方法,创建了AlertDialog,最后show出来,看下create方法源码
1 | public AlertDialog create() { |
分析4:apply()方法就是将存储的所有信息,设置到AlertDialog的AlertController里的控件上去
1 | public void apply(AlertController dialog) { |
二、实战Android万能dialog
todo…
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ivan的博客!