我還是挺喜歡這個(gè)設(shè)計(jì)模式的,而且這種設(shè)計(jì)模式非常的好用雕沿,也非常的常見,好比如我們定義提示框的時(shí)候用到的AalertDialog.Builder肥哎,或者說(shuō)我們使用第三方框架的時(shí)候用到的Builder,一般Builder里面的方法都是用于設(shè)置功能疾渣,將很多的功能集成到這個(gè)類里面榴捡,再根據(jù)用戶選擇來(lái)使用哪些功能,實(shí)現(xiàn)個(gè)性化吊圾。
這個(gè)模式用起來(lái)還真是挺套路的啊达椰,一般需要Builder的時(shí)候,都有有一個(gè)默認(rèn)的builder實(shí)現(xiàn)街夭,而當(dāng)我們想要自定義我們的Builder的時(shí)候板丽,就需要通過(guò)new 外部類.Builder()這樣的形式實(shí)例化一個(gè)外部類的Builder實(shí)例,我們可以選擇性的開放是否可以直接實(shí)例化外部類埃碱,如果我們想要限制每次都需要通過(guò)Builder來(lái)實(shí)例化外部類對(duì)象猖辫,那么就可以將外部類的構(gòu)造函數(shù)設(shè)為private,最后我們通過(guò)調(diào)用Builder的build()方法進(jìn)而調(diào)用外部類的構(gòu)造函數(shù)砚殿,就可以實(shí)例化一個(gè)外部類對(duì)象啃憎。
這樣子的好處是我們所有建造的對(duì)象可以實(shí)現(xiàn)高度的個(gè)性化,而且從代碼邏輯上非常的清晰