物件導向設計原則

2021-10-04 01:33:53 字數 2183 閱讀 1890

就乙個類而言,應該僅有乙個引起它變化的原因(職責)

主要根據不同的角度劃分職責,比如,

1、從類的組成,劃分為屬性操作和行為操作兩種。

2、從資料庫操作的不同作用,劃分為資料庫的連線操作和增刪改查

基本操作。

例如:交通工具類

//方式1

class vehicle }

public class singleresponsibility

}方案1的分析:

1.在方式1的run方法中,違反

了單一職責原則

2.解決方案:根據交通工具執行

方法不同,分解成不同類

//方式2:根據交通工具執行方法不同,分解成不同類

class roadvehicle }

class airvehicle }

class watervehicle }

public class singleresponsibility

public void runair(string vehicle)

public void runwater(string vehicle) }

public class singleresponsibility }

方案3的分析

1.這種修改方法沒有對原來的類做大的修改,只是增加方法;

2.增加的部分不影響原有部分,降低了變更引起的風險;

3.這裡在類這個級別上沒有遵守單一職責原則,但是在方法級

別上,仍然是遵守單一職責

注意事項和細節

1)降低類的複雜度,乙個類只負責一項職責。

2)提高類的可讀性,可維護性

3)降低變更引起的風險

4)通常情況下,

應當遵守單一職責原則。

只有邏輯足夠簡單,才可以在**級違反單一職責原則:

只有類中方法數量足夠少,可以在方法級別保持單一職責

原則。開閉原則(open closed principle)是程式設計中最基礎、

最重要的設計原則——物件導向設計的終極目標

實現乙個畫圖類

方式1class rectangle }

class circle }

class ******** }

class graphicdraw

else if(type2)

else if(type==3)

} }public class graphdraw }

方式1的優缺點:

1)優點是比較好理解,簡單易操作。

2)缺點是違反了開閉原則(對擴充套件(提供方)開放,對

修改(使用方)關閉):需要給類增加新功能的時候,

盡量不要修改**,或者盡可能少修改**。

3)本例,需要新增乙個圖形種類時,修改的地方比較多

方式2:

//shape類,基類

abstract class shape

class graphicdraw }

class rectangle extends shape }

class circle extends shape }

class ******** extends shape }

public class graphdraw }

黎克特制代換原則使得開放-封閉成為可能

liskov於2023年提出關於繼承的原則「inheritance

should ensure that any property proved about supertype

objects also holds for subtype objects.」——「繼承必須確

保超類所擁有的性質在子類中仍然成立。」也就是說,

當乙個子類的例項能夠替換任何其超類的例項時,它們

之間才具有is-a關係。

 該原則稱為liskov substitution principle——黎克特制代換

原則:依賴倒轉原則(dependence inversion principle)是指: 1)高層模組不應該依賴低層模組,二者都應該依賴其抽象

2)抽象不應該依賴細節,細節應該依賴抽象

3)依賴倒轉(倒置)的中心思想是面向介面程式設計

4)依賴倒轉原則是基於這樣的設計理念:

實現person接收訊息方式1

物件導向設計原則

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

物件導向設計原則

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

物件導向設計原則

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