Python 類的設計原則
阿新 • • 發佈:2018-03-22
依賴 結果 span ... 小鳥 情況 log closed 如果
# 面向對象遵循的原則: SOLID # S(Single Responsibility Principle) # 單一職責原則 # 一個類只負責一項職責 # 好處 # 易於維護, 寫出高內聚的代碼 # 易於代碼復用 # 案例# 我們之前寫的計算器類 # 假設只包含加減乘除運算和結果打印 # 如果往後需要增加, 結果寫入文件, 結果參與其他運算, 結果上傳服務器... # 是不是每一次都需要去修改此類? 就導致這個類變得特別臃腫; 不利於維護和部分代碼復用 # 解決方案# 計算器只包含, 加減乘除運算以及結果返回 # 根據不同情況, 將對結果的處理分散到其它合適的類別中 # O(Open Closed Principle) # 開放封閉原則 # 對擴展開放 #對修改關閉 # 易於維護, 保證代碼安全性以及擴展性 # 案例 # 我們之前寫的, 在Person類中, 寫的, 讓小狗小貓工作的方法 # 假設小狗小貓的工作方法名分別是watch和catch; # 那Person類中讓寵物工作的方法就需要通過if進行多分支判定 # 如果以後, 擴展了新的寵物類; 那麽, Person類中的讓寵物工作的方法, 必須要跟著修改 # 解決方案 # 通過基類, 以及抽象類等方案進行方法的統一 # O(Open Closed Principle) # 開放封閉原則 # 對擴展開放 # 對修改關閉 # 易於維護, 保證代碼安全性以及擴展性 # 案例 # 我們之前寫的, 在Person類中, 寫的, 讓小狗小貓工作的方法 # 假設小狗小貓的工作方法名分別是watch和catch; # 那Person類中讓寵物工作的方法就需要通過if進行多分支判定 # 如果以後, 擴展了新的寵物類; 那麽, Person類中的讓寵物工作的方法, 必須要跟著修改 # 解決方案 # 通過基類, 以及抽象類等方案進行方法的統一 # L(Liskov Substitution Principle) L(Liskov Substitution Principle) # I(Interface Segregation Principle) # 接口分離原則 # 如果一個類包含了過多的接口方法,而這些方法在使用的過程中並非"不可分割", 那麽應當把他們進行分離 # 所謂接口, 在Python中, 可以簡單的理解為"抽象方法" # 好處 # 提高接口的重用價值 # 案例 # 小鳥 # 吃, 叫, 飛 # 上述接口設計在有鴕鳥類的前提下, 設計就不合理 # D(Dependency Inversion Principle) # 依賴倒置原則 # 高層模塊不應該直接依賴低層模塊 # 他們應該依賴抽象類或者接口 # 好處 # 利於代碼維護 # 案例 # 電腦類, 依賴的不是某一個具體鼠標類 # 而應該是, 鼠標類的抽象 # 能單擊, 能雙擊, 能右擊, 能移動鼠標指針... # 到時, 可以是觸摸板, 也可以是有線鼠標, 也可以是藍牙鼠標...
Python 類的設計原則