設計模式學習筆記(一):設計模式

1 前言

軟件開發技術包含「招式」與「內功」,其中,編程語言,開發技術,著名框架能夠認爲是「招式」,而數據結構,算法,設計模式,重構,軟件工程等則爲「內功」。「招式」能夠很快學會,可是「內功」的修煉須要更長的時間。對設計模式的學習會令「內功」大增,配合日益純熟的「招式」,軟件開發「功力」想必會達到一個新境界。下面來正式踏入修煉設計模式之旅。算法

2 設計模式

2.1 來源

模式是在特定環境下人們解決某類重複出現的問題的一套成功或有效的解決方案。
GoF(Gang of Four,簡稱GoF,分別是Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides)將模式的概念引入軟件工程領域,標誌着軟件模式的誕生。軟件模式是將模式的通常概念應用與軟件開發領域,即軟件開發的整體指導思想或參照樣板。軟件模式並不是僅限於設計模式,還包括架構模式,分析模式和過程模式等。
在軟件模式中,設計模式是研究最爲深刻的分支。設計模式用於在特定條件下爲一些重複出現的問題提供合理的,有效的解決方案。編程

2.2 定義

設計模式通常定義以下:設計模式

設計模式是一套被反覆使用的,多數人知曉的,通過分類編目的,代碼設計經驗的總結,使用設計模式是爲了可重用代碼,
讓代碼更容易被他人理解而且提升代碼的可靠性。

設計模式通常包含的要素:bash

  • 模式名稱
  • 問題
  • 目的
  • 解決方案
  • 效果

其中關鍵要素爲模式名稱,問題,解決方案以及效果:微信

  • 模式名稱:模式的命名
  • 問題:描述了應該在什麼時候使用模式,包括了設計中存在的問題以及問題存在的緣由
  • 解決方案:描述了一個設計模式的組成部分,以及這些組成部分之間的相互關係,各自的職責和協做方式,一般解決方案經過UML類圖和核心代碼進行描述
  • 效果:描述了模式的優缺點以及使用模式時應權衡的問題

GoF設計模式有23個,模式分類能夠按照用途或者處理方式進行分類,按照用途分類的話,能夠分爲:數據結構

  • 建立型模式:主要用於描述如何建立對象
  • 結構型模式:主要用於描述如何實現類或對象的組合
  • 行爲型模式:主要用於描述類或對象怎麼交互以及怎樣分配職責

根據處理方式分類,能夠分爲:架構

  • 類模式
  • 對象模式

兩種分類模式一般結合使用,好比單例模式是對象建立型模式。框架

3 經常使用設計模式

3.1 建立型模式

  • 單例模式
  • 簡單工廠模式
  • 工廠方法模式
  • 抽象工廠模式
  • 原型模式
  • 建造者模式

    3.2 結構型模式

  • 適配器模式
  • 橋接模式
  • 組合模式
  • 裝飾模式
  • 外觀模式
  • 享元模式
  • 代理模式

    3.3 行爲型模式

  • 職責鏈模式
  • 命令模式
  • 解釋器模式
  • 迭代器模式
  • 中介者模式
  • 備忘錄模式
  • 觀察者模式
  • 狀態模式
  • 策略模式
  • 模板方法模式
  • 訪問者模式

4 設計模式用途

  • 可以實現可維護性複用的設計方案,提升設計與開發效率
  • 設計模式提供了一套通用的設計詞彙和一種通用的形式來方便開發人員之間的溝通以及交流,使得設計方案更加通俗易懂。由於設計模式跨語言,跨平臺,跨應用,跨國界
  • 大部分設計模式都兼顧了系統的可重用性以及可擴展性,使得能夠更好地重用一些已有的設計方案、功能模塊以及一個完整的軟件系統
  • 合理使用設計模式並對設計模式的使用狀況進行文檔化,將有助於別人更快地理解系統

5 總結

在這裏插入圖片描述

若是以爲文章好看,歡迎點贊。編程語言

同時歡迎關注微信公衆號:氷泠之路。ide

在這裏插入圖片描述

相關文章
相關標籤/搜索