1. 程式人生 > >[DesignPattern]Builder設計模式

[DesignPattern]Builder設計模式

模式的定義

將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

模式的使用場景

  1. 相同的方法,不同的執行順序,產生不同的事件結果時;
  2. 多個部件或零件,都可以裝配到一個物件中,但是產生的執行結果又不相同時;
  3. 產品類非常複雜,或者產品類中的呼叫順序不同產生了不同的效能,這個時候使用建造者模式非常合適;

Android原始碼中的模式實現

在Android原始碼中,我們最常用到的Builder模式就是AlertDialog.Builder, 使用該Builder來構建複雜的AlertDialog物件。簡單示例如下 :

//顯示基本的AlertDialog 
private 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