天天看點

設計模式——零:設計模式概覽什麼是設計模式設計模式從何而來設計模式的類型設計模式的六大原則

文章目錄

在《笑傲江湖》中,華山派因為劍氣之争死傷慘重,元氣大傷,由五嶽之尊,淪落為苟延殘喘。實際上,行走江湖,無深厚的内功,劍招就是無根浮萍;無精妙的劍招,内功就是鬥虻之牛,隻有内功與劍招相輔相成,才能真正地一劍破萬法。

設計模式——零:設計模式概覽什麼是設計模式設計模式從何而來設計模式的類型設計模式的六大原則

對于程式員而言,Java、C#、C++等程式設計語言,Eclipse、Visual Studio等開發工具,JSP、ASP.net等開發技術,Spring、Mybatis、JBPM等架構技術,都可以認為是招式;而資料結構、算法、設計模式、重構、軟體工程等則為内功。招式不易練,内容更難修,隻有齊頭并進,才能讓功力不斷攀升新的境界。

設計模式——零:設計模式概覽什麼是設計模式設計模式從何而來設計模式的類型設計模式的六大原則

  • 設計模式是一套被反複使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。
  • 使用設計模式是為了重用代碼、讓代碼更容易被他人了解、保證代碼可靠性。

設計模式使代碼編制真正工程化,設計模式是軟體工程的基石。項目中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重複發生的問題,以及該問題的核心解決方案,這也是設計模式能被廣泛應用的原因。

在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名為 Design Patterns - Elements of Reusable Object-Oriented Software(中文譯名:設計模式 - 可複用的面向對象軟體元素) 的書,該書首次提到了軟體開發中設計模式的概念。

四位作者合稱 GOF(四人幫,全拼 Gang of Four)。他們所提出的設計模式主要是基于以下的面向對象設計原則。

  • 對接口程式設計而不是對實作程式設計。
  • 優先使用對象組合而不是繼承。

根據設計模式的參考書 Design Patterns - Elements of Reusable Object-Oriented Software(中文譯名:設計模式 - 可複用的面向對象軟體元素) 中所提到的,總共有 23 種設計模式。這些模式可以分為三大類:建立型模式(Creational Patterns)、結構型模式(Structural Patterns)、行為型模式(Behavioral Patterns)。

設計模式——零:設計模式概覽什麼是設計模式設計模式從何而來設計模式的類型設計模式的六大原則
序号 模式 & 描述 包括
1

建立型模式

這些設計模式提供了一種在建立對象的同時隐藏建立邏輯的方式,而不是使用 new 運算符直接執行個體化對象。這使得程式在判斷針對某個給定執行個體需要建立哪些對象時更加靈活。

  • 工廠模式(Factory Pattern)
  • 抽象工廠模式(Abstract Factory Pattern)
  • 單例模式(Singleton Pattern)
  • 建造者模式(Builder Pattern)
  • 原型模式(Prototype Pattern)
2

結構型模式

這些設計模式關注類和對象的組合。繼承的概念被用來組合接口和定義組合對象獲得新功能的方式。

  • 擴充卡模式(Adapter Pattern)
  • 橋接模式(Bridge Pattern)
  • 過濾器模式(Filter、Criteria Pattern)
  • 組合模式(Composite Pattern)
  • 裝飾器模式(Decorator Pattern)
  • 外觀模式(Facade Pattern)
  • 享元模式(Flyweight Pattern)
  • 代理模式(Proxy Pattern)
3

行為型模式

這些設計模式特别關注對象之間的通信。

  • 責任鍊模式(Chain of Responsibility Pattern)
  • 指令模式(Command Pattern)
  • 解釋器模式(Interpreter Pattern)
  • 疊代器模式(Iterator Pattern)
  • 中介者模式(Mediator Pattern)
  • 備忘錄模式(Memento Pattern)
  • 觀察者模式(Observer Pattern)
  • 狀态模式(State Pattern)
  • 空對象模式(Null Object Pattern)
  • 政策模式(Strategy Pattern)
  • 模闆模式(Template Pattern)
  • 通路者模式(Visitor Pattern)
設計模式——零:設計模式概覽什麼是設計模式設計模式從何而來設計模式的類型設計模式的六大原則

對于面向對象軟體系統的設計而言,在支援可維護性的同時,提高系統的可複用性是一個至關重要的問題,如何同時提高一個軟體系統的可維護性和可複用性是面向對象設計需要解決的核心問題之一。在面向對象設計中,可維護性的複用是以設計原則為基礎的。每一個原則都蘊含一些面向對象設計的思想,可以從不同的角度提升一個軟體結構的設計水準。

面向對象設計原則為支援可維護性複用而誕生,這些原則蘊含在很多設計模式中,它們是從許多設計方案中總結出的指導性原則。面向對象設計原則也是我們用于評價一個設計模式的使用效果的重要名額之一。

設計模式六大原則:

設計原則名稱 定  義
單一職責原則 一個類隻負責一個功能領域中的相應職責
開閉原則 軟體實體應對擴充開放,而對修改關閉
裡氏代換原則 所有引用基類對象的地方能夠透明地使用其子類的對象
依賴倒轉原則 抽象不應該依賴于細節,細節應該依賴于抽象
接口隔離原則 使用多個專門的接口,而不使用單一的總接口
合成複用原則 盡量使用對象組合,而不是繼承來達到複用的目的
迪米特法則 一個軟體實體應當盡可能少地與其他實體發生互相作用

設計模式—— 一:單一職責原則 ⇒⇒

參考:

【1】:

從招式與内功談起——設計模式概述(一)

【2】:

菜鳥教程:設計模式簡介

【3】:《設計模式之禅》

【4】:

GoF的23個經典設計模式