面向對象之設計模式大全

面向對象基本概念 正則表達式

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

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

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

A.設計原則 數據結構

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

B.建立型模式 設計

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

C.結構型模式 代理

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

D.行爲型模式 日誌

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