面向對象之設計模式大全


面向對象基本概念

三大特性:封裝-繼承-多態

一些相關的重要概念:抽象-組合-動態綁定-消息傳遞

由面向對象基本特性得來的設計模式包括四類幾十種,如下所示:

A.設計原則

  • OCP-開放封閉原則:開放擴展,封裝更改
  • LSP-里氏代換原則:子類必須能夠替換其父類
  • DIP-依賴倒轉原則:抽象不應依賴細節,細節應依賴抽象(面向接口)
  • ISP-接口隔離原則:一個類對另外一個類的依賴應當建立在最小的接口上
  • CARP-合成/聚合復用原則:盡量使用合成/聚合,盡量不要使用繼承(因繼承是強偶合)
  • LoD-迪米特法則:若兩個類不必直接通信,則不應直接交互。成員該私有要私有
  • SRP-單一職責原則:就一個類而言,應該僅有一個引起它變化的原因

B.創建型模式

  • 簡單(靜態)工廠模式:由一個工廠對象決定創建出哪種實例
  • 工廠方法模式(虛擬構造子模式/多態性工廠模式):定義一個創建實例對象的工廠接口,將實際創建工作推遲到子類中。
  • 抽象工廠模式:最為抽象最具一般性,向客戶端提供一個接口,使客戶端在不必指定實例的具體類型的情況下創建多個實例族的實例對象。
  • 單例模式:只能得到一個對象實例,構造方法私有。
  • 建造者模式:將復雜對象的構建與其表示分開,使同樣的構建過程可以創建不同的表示。
  • 原型模式:用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象

C.結構型模式

  • 適配器模式:將一個接口轉換成客戶希望的另一個接口
  • 缺省適配模式:為接口提供缺省實現以供擴展。使得子類只需覆蓋這個缺省實現的個別方法,而無須去實現中的每個方法。JDK1.8中了提供了為接口添加默認實現的新特性
  • 組合(部分-整體)模式:將對象組合成樹形結構以表示“部分-整體”的層次結構
  • 裝飾器模式:動態給對象添加額外職責,比通過生成子類來增加功能更加靈活
  • 代理模式:提供代理以控制對原對象的訪問。關鍵:代理與原對象共用一個接口
  • 享元模式:運用共享技術有效地支持大量的細粒度對象
  • 外觀(門面)模式:為一組接口提供一個一致的接口,體現了DIP和LoD原則
  • 橋接模式:將抽象部分與其實現部分分離,使它們都可以獨立變化,可實現多角度分類

D.行為型模式

  • 不變模式:對象在創建之后就不在變化
  • 策略模式:定義一系列形式相同實現不同的算法,減少耦合,封裝變化
  • 模板方法模式:定義一個操作中算法的骨架,而將一些具體步驟延遲到子類
  • 觀察者模式(發布-訂閱模式):定義一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個通知者對象
  • 迭代器模式:提供順序訪問一個聚合中元素的方法。不常用,因為語言本身已內置
  • 職責鏈模式:使多個對象都有機會獲得機會處理請求。這些對象連成一條鏈。減少請求得與接收者的耦合。如過濾器
  • 命令模式:將請求封裝成一個對象,以使你可用不同的請求對客戶端進行參數化;可對請求進行排除、記錄日志、或撤銷操作
  • 備忘錄模式:在不破壞封裝的前提下捕獲一個對象的內部狀態,並在該對象外部保存此狀態
  • 狀態模式:當一個狀態改變時,允許改變其行為,看其來像是改變了其類。(將復雜的條件判斷轉移到多個小類中)
  • 訪問者模式:表示一個作用於某對象結構中的各元素的操作。把數據處理與數據結構分開
  • 解釋器模式:對一個語言定義一個文法的表示,並定義一個解釋器,來解釋語言中的句子,如正則表達式,瀏覽器。通過解釋執行
  • 中介者(調停者)模式:用一個中介對象來封裝一系列的對象交互。應用於星形結構的對象關系中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM