創建型模式

軟件工程中,建立型模式是處理對象建立的設計模式,試圖根據實際情況使用合適的方式建立對象,因為基本的對象建立方式可能會導致設計上的問題,或增加設計的複雜度。建立型模式的關注點是如何建立對象,其核心思想是要把對象的建立和使用相分離[1]

建立型模式由兩個主導思想構成。一是將系統使用的具體類封裝起來,二是隱藏這些具體類別的實例建立的方式。[2]

建立型模式又分為對象建立型模式和類建立型模式。對象建立型模式處理對象的建立,類建立型模式處理類的建立。詳細地說,對象建立型模式把對象建立的一部分推遲到另一個對象中,而類建立型模式將它對象的建立推遲到子類中。[3]

定義

建立型模式旨在將系統與它的對象建立、結合、表示的方式分離。這些設計模式在對象建立的類型、主體、方式、時間等方面提高了系統的靈活性。[4]

使用

現代軟件工程更加依賴對象的組合,而不是類的繼承,強調從寫死的行為轉變到定義一組基本行為來組合成複雜的行為[5]。寫死的行為不夠靈活,因為如果想要改變設計的一部分,需要通過重寫或者重新實現才能完成。另外,寫死沒有提高重用性,而且難以跟蹤錯誤。由於這些原因,建立型模式比寫死的行為更有用。建立型模式使設計變得更靈活,提供了不同的方式,從代碼中移除了對需要實例化的具體類的參照[6]。換句話說,這些模式增強了對象和類之間的獨立性。

在以下情況中,可以考慮應用建立型模式:

  • 一個系統需要和它的對象和產品的建立相互獨立。
  • 一組相關的對象被設計為一起使用。
  • 隱藏一個類別館的具體實現,僅暴露它們的介面。
  • 建立獨立複雜對象的不同表示。
  • 一個類希望它的子類實現它所建立的對象。
  • 類別的實例化在執行時才指定。
  • 一個類只能有一個實例,而且這個實例能在任何時候訪問到。
  • 實例應該能在不修改的情況下具有可延伸性。

舉例

建立型設計模式的一些例子如下:

  • 抽象工廠模式,提供一個建立相關或依賴對象的介面,而不指定對象的具體類。
  • 工廠方法模式,允許一個類別的實例化推遲到子類中進行。
  • 生成器模式,將一個複雜對象的建立與它的表示分離,使同樣的建立過程可以建立不同的表示。
  • 延遲初始化模式,將對象的建立,某個值的計算,或者其他代價較高的過程推遲到它第一次需要時進行。
  • 對象池模式,通過回收不再使用的對象,避免建立和銷毀對象時代價高昂的取得和釋放資源的過程。
  • 原型模式,使用原型實例指定要建立的對象類型,通過複製原型新增的對象。
  • 單例模式,保證一個類只有一個實例,並且提供對這個實例的全域訪問方式。

參考文獻

  1. ^ 创建型模式. [2021-08-28]. (原始內容存檔於2021-08-28). 
  2. ^ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns. Massachusetts: Addison-Wesley. 1995: 81.395. ISBN 0-201-63361-2. 
  3. ^ 設計模式:可復用物件導向軟件的基礎
  4. ^ Judith, Bishop. C# 3.0 Design Patterns. O'Reilly Media. December 2007: 336 [2012-07-07]. ISBN 978-0-596-52773-0. (原始內容存檔於2019-09-14). 
  5. ^ Design Patterns. Massachusetts: Addison Wesley. 1995: 84.395. ISBN 0-201-63361-2. 
  6. ^ Design Patterns. Massachusetts: Addision Wesley. 1995: 85.395. ISBN 0-201-63361-2. 

參見