爲何 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