Python物件導向 設計原則

2021-10-02 22:43:21 字數 1600 閱讀 1987

openclosedprinciple

對擴充套件開放,對修改關閉。

增加新功能,不改變原有**。

例如:man開車去上班,呼叫car的run方法,car的行駛路線可以隨意更改,man去上班的這件事情不用變

singleresponsibilityprinciple   

乙個類有且只有乙個改變它的原因。

例如:car只負責運送人,man只管上班

dependencyinversionprinciple

客戶端**(呼叫的類)盡量依賴(使用)抽象。

抽象不應該依賴細節,細節應該依賴抽象。

例如:man上班需要交通工具vehicle,至於什麼交通工具,有啥就是啥

composite reuse principle

如果僅僅為了**復用優先選擇組合復用,而非繼承復用。

組合的耦合性相對繼承低。

例如,man的交通工具很多,由自行車,電單車,小汽車,電動車等等,有什麼用什麼

liskovsubstitutionprinciple

父類出現的地方可以被子類替換,在替換後依然保持原功能。

子類要擁有父類的所有功能。

子類在重寫父類方法時,盡量選擇擴充套件重寫,防止改變了功能。

例如:bike,car的run實現各自是不一樣的

law of

demeter

不要和陌生人說話。

類與類互動時,在滿足功能要求的基礎上,傳遞的資料量越少越好。因為這樣可能降低耦合度。

示例:

class vehicle:

def __init__(self, speed):

self.speed = speed

def run(self):

pass

class bike(vehicle):

def run(self):

print("甩起兩條小短腿")

class car(vehicle):

def run(self):

print("一腳油門的事情")

class man:

def __init__(self, name, vehicle):

self.name = name

self.vehicle = vehicle

def work(self):

print(self.name, "該去上班了")

self.vehicle.run()

if __name__ == '__main__':

w = man("老王", bike(10))

# 老王騎車去上班

w.work()

# 老張開車去上班

z = man("老張", car(100))

z.work()

物件導向設計原則

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

物件導向設計原則

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

物件導向設計原則

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