物件導向設計,為什麼?
變化是復用的天敵!
物件導向設計最大的優勢在於:抵禦變化
重新認識物件導向
理解隔離變化
從巨集觀層面來看,物件導向的構建方式更能適應軟體的變化,能將變化所帶來的影響減為最小
各司其職
從微觀層面來看,物件導向的方式更強調各個類的「責任」
由於需求變化導致的新增型別不應該影響原來型別的實現----是所謂各負其責
物件是什麼?
從語言實現層面來看,物件封裝了**和資料
從規格層面講,物件提供一系列可使用的公共介面
從概念層面講,物件是某種擁有責任的抽象
物件導向設計原則
(1)依賴倒置原則(dip)
(2)開放封閉原則(ocp)
(3)單一職責原則(srp)
(4)liskov替換原則(lsp)
(5)介面隔離原則(isp)
(6)優先使用物件組合,而不是類繼承
(7)封裝變化點
(8)針對介面程式設計,而不是針對實現程式設計
面向介面設計
產業強盛的標誌
介面標準化!
以史為鑑
據史書記載和考古發現,秦的兵器不論東南西北,出土地點都有統一的標準,包括劍,戈,弩,甚至弩機,弩體,箭頭都是一樣的,而其他六國則不是。
畢生之前的雕版印刷將字刻死在木板或石板上,每次印刷不同文章,要刻不同的板。而畢生發明的活字印刷首先在板上刻好字格,然後再刻單獨的字模,「按需索取」放在字格中,不同的排列法產生不同的文章,而不必重新刻板。
將設計原則提公升為設計經驗
(1)設計習語 design idioms
design idioms 描述與特定程式語言相關的底層模式,技巧,慣用法
(2)設計模式 design patterns
design patterns 主要描述的是「類與相互通訊的物件之間的組織關係,包括它們的角色、職責、協作方式等方面」
(3)架構模式 architectural patterns
architectural pattern 描述系統中與基本機構,組織關係密切的高層模式,包括子系統劃分,職責,以及如何組織它們之間的關係的規則
物件導向設計原則
oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...
物件導向設計原則
物件設計原則 物件導向設計原則 物件導向設計的基石是 開 閉 原則。開一閉 原則講的是 乙個軟體實體應當對擴充套件開放,對修改關閉。這個規則說的是,在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。從另外乙個角度講,就是所謂的 對可變性封裝原則 對可變性封裝原則 意味著兩點 1 ...
物件導向設計原則
oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...