1:物件導向的三要素b 封裝能夠1.1 封裝【encapsulation】a 封裝=合理的隱藏資料的隱藏【隱藏在方法背後】
實現的隱藏【隱藏在介面背後】
變化的隱藏【隱藏在抽象背後】
提高物件的復用性c 良好的封裝=物件的高內聚減低物件的耦合度
1.2 繼承【inheritance】
a 基於差異式程式設計c 繼承與實現b 繼承與合成/聚合
合成/聚合復用原則
b 繼承的方式類的繼承
介面的繼承
1.3 多型【polymorphism】
a 多型指物件在不同時刻體現不同形態的能力2:物件導向的五原則b 抽象與多型
c 多型的形式基類繼承式多型
介面實現式多型
2.1 單一職責原則【srp】 瑞士軍刀
a 單一職責保證了物件的細粒度--便於復用b 單一職責分離了變與不變物件的單一性--利於穩定
c 不要建立「上帝」類facade類除外
2.2 開閉原則【ocp】
a 對於擴張開放對於更改封閉2.3 替換原則【lsp】b 開閉原則的核心是「抽象」
c 多型保證了擴張的開放性
d 開放意味著是想是可替換的
a 子型別必須能夠完全替換父型別2.4 依賴倒置原則【dip】b 替換關注的是行為的可替換
c 替換原則可以驗證繼承關係正確性的準則(is a)
體現了對個是現在介面的一致性
如果違背該原則通常的做法是引入新的超類將以前的父子關係轉變為兄弟關係
a 面向介面程式設計2.5 介面隔離原則【isp】b 抽象不依賴於細節,細節應該依賴於抽象
c 高層模組與底層模組以及客戶端與伺服器端模組應該依賴於介面而不應該依賴於實現
d 依賴倒置原則的核心是「抽象」 和「間接」
a 介面盡量小防止介面汙染3:物件導向的六觀點b 介面若要穩定就應當承擔較少的這則【符合單一職責原則】
c 可以合理利用介面的繼承
d 同乙個類可以實現多個介面站在呼叫者的角色不同的介面代表不同的關注點,不同的職責甚至不同的角色
3.1 復用【reusibility】
a 軟體設計最大的敵人是重複e 如何提高軟體的復用性b 重複的**會導致解決方案的蔓延
c 細粒度,封裝,高內聚
d 相關模式prototype模式
proxy模式
方法級3.2 擴充套件【extenbility】物件級
模組級
a 不修改原有**增加新的功能謂之擴充套件c 相關設計模式b 實現擴充套件的方式利用繼承實現擴充套件
利用組合實現擴充套件
利用繼承和組合實現擴充套件
利用抽象實現擴充套件
decorator模式3.3 分離【separability】visitor模式
proxy模式
a 軟體設計需重視職責的分離d 職責分離表現為b 分離需要和抽象結合實現依賴的解耦
c 職責分離體現了單一職責原則
介面隔離原則
如何定義職責e 分離的目標如何分解職責
如何抽象職責
分離變與不變f 相關設計模式分離介面和實現
分離資料和行為
factorymethod模式3.4 變化【change】bridge模式
iterator模式
a 封裝變化是解決之道c 解決變化應遵循b 封裝變化的核心是抽象封裝建立的變化
封裝結構的變化
封裝行為的變化
開閉原則d 封裝變化的本質是隔離變化依賴倒置原則
e 隔離變化的方法
通過分離f 相關模式通過抽象
依賴注入
factorymothod模式3.5 簡約【simplicity】abatractfactory模式
strategy模式
a 簡約需遵循kiss原則b 如何實現簡約場景驅動設計
避免設計過度
封裝有利於簡約:職責的封裝c 簡約不等於簡陋等於簡單而優雅繼承有利於簡約:職責的服用
多型用利於簡約: 職責的委託
d 簡約需要重構和精益求精
e 如何考量簡約
可復用性f 相關模式可擴充套件性
可測試性
facade模式3.6 一致【coherance】singletion模式
composite模式
templetmethod模式
strategy模式
a 一致體現了軟體結構的和諧與平衡c 相關模式b 一致體現為介面的一致:對於實現可替換
形式的一致:窺一斑而知全豹
呼叫的一致:客戶可透明訪問
composite模式adapter模式
物件導向設計
物件導向設計 object oriented design,ood 方法是oo方法中乙個中間過渡環節。其主要作用是對ooa分析的結果作進一步的規範化整理,以便能夠被oop直接接受。物件導向設計 ood 是一種軟體設計方法,是一種工程化規範。這是毫無疑問的。按照bjarne stroustrup的說法...
物件導向設計
物件導向的設計把握乙個重要原則 誰擁有資料,誰就對外提供操作這些資料的方法。人在黑板上畫圓 person,blackboard,circle draw 列車司機在剎車 人關門 兩塊石頭磨成一把石刀,石刀可以砍樹,砍成木材,木材可以做椅子。stone石頭 stoneknife石刀 stoneknife...
物件導向設計
物件導向的基本要素 封裝 繼承 多型。封裝的目的是隱藏事務內部的實現細節,以便提高安全性和簡化程式設計。封裝提供了合理的邊界,避免外部呼叫者接觸到內部的細節。我們在日常開發中,因為無意間暴露了細節導致的難纏 bug 太多了,比如在多執行緒環境暴露內部狀態,導致的併發修改問題。從另外乙個角度看,封裝這...