[DesignPattern]Builder設計模式
阿新 • • 發佈:2018-12-05
模式的定義
將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
模式的使用場景
- 相同的方法,不同的執行順序,產生不同的事件結果時;
- 多個部件或零件,都可以裝配到一個物件中,但是產生的執行結果又不相同時;
- 產品類非常複雜,或者產品類中的呼叫順序不同產生了不同的效能,這個時候使用建造者模式非常合適;
Android原始碼中的模式實現
在Android原始碼中,我們最常用到的Builder模式就是AlertDialog.Builder, 使用該Builder來構建複雜的AlertDialog物件。簡單示例如下 :
//顯示基本的AlertDialogprivate void showDialog(Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setIcon(R.drawable.icon); builder.setTitle("Title"); builder.setMessage("Message"); builder.setPositiveButton("Button1",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle("點選了對話方塊上的Button1"); } }); builder.setNeutralButton("Button2", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) { setTitle("點選了對話方塊上的Button2"); } }); builder.setNegativeButton("Button3", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle("點選了對話方塊上的Button3"); } }); builder.create().show(); // 構建AlertDialog, 並且顯示 }
優點與缺點
優點
- 良好的封裝性, 使用建造者模式可以使客戶端不必知道產品內部組成的細節;
- 建造者獨立,容易擴充套件;
- 在物件建立過程中會使用到系統中的一些其它物件,這些物件在產品物件的建立過程中不易得到。
缺點
- 會產生多餘的Builder物件以及Director物件,消耗記憶體;
- 物件的構建過程暴露。
連結:https://www.jianshu.com/p/87288925ee1f