天天看點

java設計模式-概述篇

設計模式(Design Pattern)是前輩們對代碼開發經驗的總結,是解決特定問題的一系列套路。它不是文法規定,而是一套用來提高代碼可複用性、可維護性、可讀性、穩健性以及安全性的解決方案

這 23 種設計模式的本質是面向對象設計原則的實際運用,是對類的封裝性、繼承性和多态性,以及類的關聯關系群組合關系的充分了解

當然,軟體設計模式隻是一個引導,在實際的軟體開發中,必須根據具體的需求來選擇:

  • 對于簡單的程式,可能寫一個簡單的算法要比引入某種設計模式更加容易;
  • 但是對于大型項目開發或者架構設計,用設計模式來組織代碼顯然更好。

設計模式有兩種分類方法,即根據模式的目的來分和根據模式的作用的範圍來分

1. 根據目的來分

根據模式是用來完成什麼工作來劃分,這種方式可分為建立型模式、結構型模式和行為型模式 3 種。

  1. 建立型模式:用于描述“怎樣建立對象”,它的主要特點是“将對象的建立與使用分離”。GoF 中提供了單例、原型、工廠方法、抽象工廠、建造者等 5 種建立型模式。
  2. 結構型模式:用于描述如何将類或對象按某種布局組成更大的結構,GoF 中提供了代理、擴充卡、橋接、裝飾、外觀、享元、組合等 7 種結構型模式。
  3. 行為型模式:用于描述類或對象之間怎樣互相協作共同完成單個對象都無法單獨完成的任務,以及怎樣配置設定職責。GoF 中提供了模闆方法、政策、指令、職責鍊、狀态、觀察者、中介者、疊代器、通路者、備忘錄、解釋器等 11 種行為型模式

2. 根據作用範圍來分

根據模式是主要用于類上還是主要用于對象上來分,這種方式可分為類模式和對象模式兩種。

  1. 類模式:用于處理類與子類之間的關系,這些關系通過繼承來建立,是靜态的,在編譯時刻便确定下來了。GoF中的工廠方法、(類)擴充卡、模闆方法、解釋器屬于該模式。
  2. 對象模式:用于處理對象之間的關系,這些關系可以通過組合或聚合來實作,在運作時刻是可以變化的,更具動态性。GoF 中除了以上 4 種,其他的都是對象模式。

表 1 介紹了這 23 種設計模式的分類

java設計模式-概述篇