Java基礎-建造者模式

Merbng發表於2019-03-11

定義

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

場景

比如最常見的AlertDialog,比如Camera開發過程中,可能需要設定一個初始化的相機配置,設定攝像頭方向,閃光燈開關閉,成像質量等等,這種場景下就可以使用建造者模式。

優缺點

  • 優點 1).易於解耦,將產品本身與產品建立過程進行解耦,可以使用相同的建立過程來得道不同的產品,也就是說細節依賴抽象。

    2).易於精確控制物件的建立。

    3).易於擴充,增加新的具體建造者無需修改原有類庫的程式碼,易於擴充,符合"開閉原則"。

  • 缺點 1).建造者模式所建立的產品一般具有較多的共同點,其組成部分相似,如果產品之間的差異性很大,則不適合使用建造者模式,因此使用範圍受到一定的限制。

    2).如果產品的內部變化複雜,可能導致需要定義很多具體建造者類來實現這種變化,導致系統變得很大。

  • 裝飾者模式

    動態的給一個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活,裝飾者模式可以在不改變原有類結構的情況下增強類的功能,比如java中的BufferedInputStream包裝FileInputStream,舉個開發中的例子,比如我們現有的網路框架上需要增加新的功能,那麼再包裝一層即可,裝飾者模式解決了繼承存在的一些問題,比如多層繼承程式碼的臃腫,使程式碼更清晰。

參考文章

相關文章