天天看點

淺談建立型模式

淺談建立型模式

前言:

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

模式的定義

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

設計模式的定義

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

對建立型模式的認識

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

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

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

建立型模式由兩個主導思想構成。一是将系統使用的具體類封裝起來,二是隐藏這些具體類的執行個體建立和結合的方式。

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

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

建立型模式的使用

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

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

建立型模式的執行個體

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

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

總結

建立型模式的關注點:

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

建立型模式的作用:

建立型模式對類的執行個體化過程進行了抽象,能夠将軟體子產品中對象的建立和對象的使用分離,對開發人員隐藏了類的執行個體的建立細節。

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

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

:泰鬥賢若如

微信公衆号

:見賢思程式設計

Github

:https://github.com/zyx110

有事微信

:zyxt1637039050

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權利。

淺談建立型模式

我不能保證我所說的都是對的,但我能保證每一篇都是用心去寫的,我始終認同: “

分享的越多,你的價值增值越大

”,我們一同在分享中進步,在分享中成長,

越努力越幸運

。再分享一句話“

十年前你是誰,一年前你是誰,甚至昨天你是誰,都不重要。重要的是,今天你是誰,以及明天你将成為誰

。”

人生赢在轉折處,改變從現在開始!

支援我的朋友們記得點波

推薦

哦,您的肯定就是我前進的動力。