淺談創建型模式

淺談創建型模式

前言:

最近學習了設計模式,對設計模式有了一些瞭解,下面我來淺談一下設計模式中的創建型模式吧!

模式的定義

說到“模式”,其實模式起源於建築業而非軟件專業,所謂的模式都描述了一個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心,通過這種方式,人們可以無數次地重用那些已有的解決方案,無需再重複相同的工作。簡單點說,模式就是在特定環境中解決問題的一種方案

設計模式的定義

我要說的創建型模式是設計模式中的一類,在說創建型模式之前我先介紹一下設計模式,設計模式是一套被反覆使用、多數人知曉的、經過分類編寫的、代碼設計經驗的總結。我們在寫程序的過程中使用設計模式就是爲了可重用代碼、讓代碼更容易被他人理解、提高代碼的可靠性

對創建型模式的認識

在軟件工程中,創建型模式是處理對象創建的設計模式,試圖根據實際情況使用合適的方式創建對象。

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

基本的對象創建方式可能會導致設計上的問題,或增加設計的複雜度。創建型模式通過以某種方式控制對象的創建來解決問題。

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

創建型模式又分爲對象創建型模式類創建型模式。對象創建型模式處理對象的創建,類創建型模式處理類的創建。詳細地說,對象創建型模式把對象創建的一部分推遲到另一個對象中,而類創建型模式將它對象的創建推遲到子類中。

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

創建型模式的使用

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

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

創建型模式的實例

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

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

總結

創建型模式的關注點:

創建型模式關注對象的創建過程。 創建型模式描述如何將對象的創建和使用分離,讓開發人員在使用對象時無需關心對象的創建細節,從而降低系統的耦合度。 軟件在運行時類將實例化成對象,並由這些對象來協作完成各項業務功能

創建型模式的作用:

創建型模式對類的實例化過程進行了抽象,能夠將軟件模塊中對象的創建和對象的使用分離,對開發人員隱藏了類的實例的創建細節。

創建型模式要解決的問題:

每一個創建型模式都通過採用不同的解決方案來回答三個問題,即創建什麼(what),由誰創建(who)和何時創建(when)。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章