介紹
Builder 模式是一步一步創建一個復雜對象的創建型模式,它允許用戶在不知道內部構建細節的情況下,可以更精細地控制對象的構造流程。
該模式是為了將構建復雜對象的過程和它的部件解耦,使得構建過程和部件的表示隔離開來。
AlertDialog 的 Builder 模式
Builder 中有一個參數為 AlertController.AlertParams ,在 Builder 的 set 系列方法中,將用戶設置的參數保存在 AlertController.AlertParams 參數中
AlertDialog 的創建,在 Builder 的 create 方法中,創建了一個 AlertDialog 對象,并在 AlertParams 的 apply 方法中,將 AlertParams 中保存的用戶設置的參數通過 AlertDialog 的 set 系列方法設置到 AlertDialog 對象中。
這個過程就是典型的 Builder 模式。
當然,在 AlertDialog 中是使用 AlertController 來保存參數的,這就是另外一回事了,從 Builder 到 AlertDialog 的過程是 Builder 模式的工作過程
AlertDialog 的工作過程
在 AlertDialog 對象的構造過程中使用 Builder 模式,最后將用戶設置的參數保存在 AlertDialg 的內部類 AlertController 中
-
AlertDialog 的 show 方法中,才是真正工作過程的核心部分,下面先直觀的列出 show 方法的工作過程
- 調用 AlertDialog 的 onCreate 方法,為 Window 對象設置要顯示的布局,并使用 Alertcontroller 參數保存的數據初始化布局中的視圖內容。
- onStart() 方法調用
- 調用 WindowManager 的 addView 方法完成顯示到桌面