Builder (建造者)屬于創(chuàng)建型模式
意圖
將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示??梢苑植綐?gòu)造每一部分。
適用性
當(dāng)創(chuàng)建復(fù)雜對(duì)象的算法應(yīng)該獨(dú)立于對(duì)象的組成部分以及它們的裝配方式;
當(dāng)構(gòu)造過(guò)程必需允許被構(gòu)造的對(duì)象有不同的表示時(shí)。
簡(jiǎn)介
將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。可以分步構(gòu)造每一部分。
模式的使用場(chǎng)景
相同的方法,不同的執(zhí)行順序,產(chǎn)生不同的事件結(jié)果時(shí);
多個(gè)部件或零件,都可以裝配到一個(gè)對(duì)象中,但是產(chǎn)生的運(yùn)行結(jié)果又不相同時(shí);
產(chǎn)品類(lèi)非常復(fù)雜,或者產(chǎn)品類(lèi)中的調(diào)用順序不同產(chǎn)生了不同的效能,這個(gè)時(shí)候使用建造者模式非常合適;
源碼展現(xiàn)
- 用法
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle("Dialog")
.setMessage("I'm a dialog")
.setIcon(R.drawable.ic_launcher)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
}
}).create();
dialog.show();
- 效果圖

效果圖.png
Builder 是 AlertDialog 內(nèi)部類(lèi)
Builder
+AlertDialog show()
+AlertDialog create()
+Builder setTitle(String msg)
+Builder setMessage(String msg)
+Builder setIcon(int iconId)
...