为何 AlertDialog 使用Builder 模式呢?java
首先说句废话,由于 AlertDialog 太过复杂,内部参数太多,而后不使用构建者模式那么 AlertDialog 的构造方法就多是:ui
更多精品文章分类spa
AlertDialog(String title);
AlertDialog(String message)
AlertDialog(int resId)
AlertDialog(int resId, String title, String message);
AlterDialog(int resId, String title, String message, String PositiveButtonString, OnClickListener listener);
AlterDialog(int resId, String title, String message, String PositiveButtonString, OnClickListener listener);
AlterDialog(int resId, String title, String message, String NegativeButtonString, OnClickListener listener);
AlterDialog(int resId, String title, String message, String PositiveButtonString, OnClickListener listener, String NegativeButtonString, OnClickListener listener);
....
复制代码
你以为这样的代码好吗?假如里面的参数还要多呢?code
有的同窗就说了,那能够只有一个默认的构造方法,经过这个构造方法生成对象后,而后再调用对象的各类 set
方法来调整。这么作的确是达到了最终的效果了。cdn
可是这种作法我举个例子,比如咱们都想要获得一个爱读书,身体好,会审美的人。你的这种作法是,先把孩子养大了,其实这个孩子不爱读书,身体很差,审美也不怎么样,而后你再强行的改变孩子。对象
而使用 Builder 是提早培养孩子,提早告诉孩子要怎么样,最后孩子长大了就是这个样的。blog
使用 Builder 你能够提早把你想要的属性经过 Builder 的 set 方法设置好,而后再去构建 AlertDialog 对象。get
而不是构造出 AlertDialog 对象后再去修改属性。it
这就是简单的构建者模式,将一个复杂对象的构建与它的表示分离,使一样的构建过程能够建立不一样的表示。io