物件導向的設計原則

2021-10-10 20:01:56 字數 1778 閱讀 1703

uml類圖簡介

設計模式的分類

物件導向的設計原則

python設計模式-單例模式

python設計模式-工廠模式

python設計模式-門面模式

python設計模式-**模式

python設計模式-觀察者模式

python設計模式-命令模式

python設計模式-模板方法模式

python設計模式-模型·檢視·控制器-復合模式

python設計模式-狀態模式

開放/封閉原則規定,類或物件及其方法對於擴充套件來說,應該是開放的,但是對於修改來說,應該是封閉的。

簡單地說,這意味著當你開發軟體應用的時候,一定確保以通用的方式來編寫類或模組,以便每當需要擴充套件類或物件行為的時候不必修改類本身。相反,類的簡單擴充套件將有助於建立新的行為。

例如,開放/封閉原則能夠在下列情形中表現得淋漓盡致:為了實現所需行為,使用者必須通過擴充套件抽象基類來建立類的實現,而不是通過修改抽象類。

本設計原則的優點如下。

控制反轉原則是指,高層級的模組不應該依賴於低層級的模組,它們應該都依賴於抽象。細節應該依賴於抽象,而不是抽象依賴於細節。

該原則建議任何兩個模組都不應以緊密方式相互依賴。事實上,基本模組和從屬模組應當在它們之間提供乙個抽象層來耦合。這個原則還建議,類的細節應該描繪抽象。在某些情況下,這種觀念會反轉,也就是實現細節本身決定了抽象,這種情況是應該避免的。

控制反轉原則的優點如下。

介面隔離原則規定,客戶端不應該依賴於它們不需要使用的介面。介面隔離原則的意思就是,軟體開發人員應該仔細地處理介面。例如,它提醒開發員/架構師開發的方法要與特定功能緊密相關。如果存在與介面無關的方法,那麼依賴於該介面的類就必須實現它,實際上這是毫無必要的。

例如,乙個 pizza介面不應該提供名為 add_chicken()的方法。基於 pizza介面的 veg pizza類不應該強制實現該方法。

本設計原則的優點如下所示。

單一職責的含義是:類的職責單一,引起類變化的原因單一。這個原則是說,當我們開發類時,它應該為特定的功能服務。如果乙個類實現了兩個功能,那麼最好將它們分開。也就是說,功能才是改變的理由。例如,乙個類可以因為所需行為的變化而進行修改,但是如果乙個類由於兩個因素(基本上是兩個功能的改變)而改變,那麼該類就應該進行相應的分割。

本設計原則的優點如下所示。

替換原則規定,派生類必須能夠完全取代基類。這個原則很簡單,當應用程式開發人員編寫派生類時,該原則的含義就是他們應該擴

展基類。此外,它還建議派生類應該盡可能對基類封閉,以至於派生類本身可以替換基類,而無需修改任何**。

最少知識原則指導我們減少物件之間的互動:

1、在設計系統時,對於建立的每個物件,都應該考察與之互動的類的數量,以及互動的方式;

2、遵循這個原則,就能夠避免建立許多彼此緊密耦合的類的情況

3、如果類之間存在大量依賴關係,那麼系統就會變得難以維護。如果對系統中的任何一部分進行修改,都可能導致系統的其他部分被無意改變,這意味著系統會退化,是應該堅決避免的。

門面模式背後的設計原理就是最少知識原則。

好萊塢原則是一種設計原則,即不要給我們打**,我們會打給你。它來自好萊塢哲學,如果有適合演員的角色,影棚會給演員打**。

在物件導向的世界中,我們允許低層元件使用好萊塢原則將自己掛入系統中,然而,高層元件確定底層系統的使用方式,以及何時需要它們。換句話說,高層元件對待底層元件的方式也是不要給我們打**,我們會打**給你。

這涉及模板方法模式,在這個意義上,它是高階抽象類,它安排定義演算法的步驟。根據演算法的工作方式,通過呼叫底層類來定義各個步驟的具體實現。

參考:《python設計模式》(第2版)

物件導向設計原則

oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...

物件導向設計原則

物件設計原則 物件導向設計原則 物件導向設計的基石是 開 閉 原則。開一閉 原則講的是 乙個軟體實體應當對擴充套件開放,對修改關閉。這個規則說的是,在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。從另外乙個角度講,就是所謂的 對可變性封裝原則 對可變性封裝原則 意味著兩點 1 ...

物件導向設計原則

oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...