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