java 之 物件導向思想設計原則及常見設計模式

2021-07-24 17:53:44 字數 2586 閱讀 7188

物件導向思想設計原則

在實際的開發中,我們要想更深入的了解物件導向思想,就必須熟悉前人總結過的物件導向的思想的設計原則

單一職責原則

開閉原則

黎克特制替換原則

依賴注入原則

介面分離原則

迪公尺特原則

單一職責原則

其實就是開發人員經常說的」高內聚,低耦合」

也就是說,每個類應該只有乙個職責,對外只能提供一種功能,而引起類變化的原因應該只有乙個。在設計模式中,所有的設計模式都遵循這一原則。

開閉原則

核心思想是:乙個物件對擴充套件開放,對修改關閉。

其實開閉原則的意思就是:對類的改動是通過增加**進行的,而不是修改現有**。

也就是說軟體開發人員一旦寫出了可以執行的**,就不應該去改動它,而是要保證它能一直執行下去,如何能夠做到這一點呢?這就需要借助於抽象和多型,即把可能變化的內容抽象出來,從而使抽象的部分是相對穩定的,而具體的實現則是可以改變和擴充套件的。

黎克特制替換原則

核心思想:在任何父類出現的地方都可以用它的子類來替代。

其實就是說:同乙個繼承體系中的物件應該有共同的行為特徵。

依賴注入原則

核心思想:要依賴於抽象,不要依賴於具體實現。

其實就是說:在應用程式中,所有的類如果使用或依賴於其他的類,則應該依賴這些其他類的抽象類,而不是這些其他類的具體類。為了實現這一原則,就要求我們在程式設計的時候針對抽象類或者介面程式設計,而不是針對具體實現程式設計。

介面分離原則

核心思想:不應該強迫程式依賴它們不需要使用的方法。

其實就是說:乙個介面不需要提供太多的行為,乙個介面應該只提供一種對外的功能,不應該把所有的操作都封裝到乙個介面中

迪公尺特原則

核心思想:乙個物件應當對其他物件盡可能少的了解

其實就是說:降低各個物件之間的耦合,提高系統的可維護性。在模組之間應該只通過介面程式設計,而不理會模組的內部工作原理,它可以使各個模組耦合度降到最低,促進軟體的復用

設計模式概述

設計模式(design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、**設計經驗的總結。使用設計模式是為了可重用**、讓**更容易被他人理解、保證**可靠性。

設計模式不是一種方法和技術,而是一種思想

設計模式和具體的語言無關,學習設計模式就是要建立物件導向的思想,盡可能的面向介面程式設計,低耦合,高內聚,使設計的程式可復用

學習設計模式能夠促進對物件導向思想的理解,反之亦然。它們相輔相成

設計模式的幾個要素

名字 必須有乙個簡單,有意義的名字

問題 描述在何時使用模式

解決方案 描述設計的組成部分以及如何解決問題

效果 描述模式的效果以及優缺點

設計模式的分類

建立型模式 物件的建立

結構型模式 物件的組成(結構)

行為型模式 物件的行為

簡單工廠模式概述

又叫靜態工廠方法模式,它定義乙個具體的工廠類負責建立一些類的例項

優點 客戶端不需要在負責物件的建立,從而明確了各個類的職責

缺點 這個靜態工廠類負責所有物件的建立,如果有新的物件增加,或者某些物件的建立方式不同,就需要不斷的修改工廠類,不利於後期的維護

工廠方法模式概述

工廠方法模式中抽象工廠類負責定義建立物件的介面,具體物件的建立工作由繼承抽象工廠的具體類實現。

優點 客戶端不需要在負責物件的建立,從而明確了各個類的職責,如果有新的物件增加,只需要增加乙個具體的類和具體的工廠類即可,不影響已有的**,後期維護容易,增強了系統的擴充套件性

缺點 需要額外的編寫**,增加了工作量

單例設計模式概述

單例模式就是要確保類在記憶體中只有乙個物件,該例項必須自動建立,並且對外提供。

優點 在系統記憶體中只存在乙個物件,因此可以節約系統資源,對於一些需要頻繁建立和銷毀的物件單例模式無疑可以提高系統的效能。

缺點 沒有抽象層,因此擴充套件很難。

職責過重,在一定程式上違背了單一職責

模版設計模式概述

模版方法模式就是定義乙個演算法的骨架,而將具體的演算法延遲到子類中來實現

優點 使用模版方法模式,在定義演算法骨架的同時,可以很靈活的實現具體的演算法,滿足使用者靈活多變的需求

缺點 如果演算法骨架有修改的話,則需要修改抽象類

裝飾設計模式概述

裝飾模式就是使用被裝飾類的乙個子類的例項,在客戶端將這個子類的例項交給裝飾類。是繼承的替代方案

優點 使用裝飾模式,可以提供比繼承更靈活的擴充套件物件的功能,它可以動態的新增物件的功能,並且可以隨意的組合這些功能

缺點 正因為可以隨意組合,所以就可能出現一些不合理的邏輯

介面卡設計模式概述

將乙個類的介面轉換成另外乙個客戶希望的介面。從而使原來不能直接呼叫的介面變的可以呼叫。

優點 讓本來不適合使用的介面變得適合使用

缺點 一次只能適配乙個類,使用有一定的侷限性

OOD之物件導向設計原則

一 概述 物件導向有七大設計原則 單一職責原則 開閉原則 黎克特制代換原則 依賴倒轉原則 介面隔離原則 合成復用原則 迪公尺特法則。最主要的是 solid s 單一職責原則 o 開閉原則 l 黎克特制替換原則 i 介面隔離原則 d 依賴倒轉原則 二 物件導向設計原則 1 單一職責原則 上面這個圖,有...

物件導向思想設計原則

物件導向思想設計原則 物件導向思想設計原則 在實際的開發中,我們要想更深入的了解物件導向思想,就必須熟悉前人總結過的物件導向的思想的設計原則。單一職責原則 開閉原則 黎克特制替換原則 依賴注入原則 介面分離原則 迪公尺特原則 單一職責原則 其實就是開發人員經常說的 高內聚,低耦合 也就是說,每個類應...

php之物件導向思想

ooa object oriented analysis 物件導向分析 ood object oriented design 物件導向設計 oop object oriented programing 物件導向過程 物件導向的三大特性 封裝 繼承 多型。記憶體分為 棧空間段,堆空間段,段,初始化靜態...