天天看點

ADO.NET中的面向對象技術總結

面向對象設計的目标

可擴充性

Extensibility

系統可以很容易增加功能,而對原有的系統影響很小

靈活性

Flexibility

子產品相對獨立,通信盡可能少

當一個子產品修改時,對别的子產品影響很小

可替換性

Pluggability

當一部分不在滿足需要時,可以将舊的部分用新的輕松替換

系統“線上更新”功能就是很好的說明

面向對象的總體原則

1.針對接口程式設計,而不是針對實作程式設計

客戶無需知道所使用的的對象的特定類型

隻需要知道對象擁有客戶所期望的接口

2.優先使用對象組合,而不是類繼承

對象組合:一個含有其他對象的類稱為組合類,比如使用的擴充實體

繼承在某種程度上破壞了封裝性、子類父類耦合度高,父類修改後會影響子類

而對象組合隻要求被組合的對象具有良好定義的接口。耦合度降低,一個類的修改對于其他類影響很小

3.封裝變化點

使用封裝建立對象之間的分界層,讓設計者可以在分界層的一側進行修改,而不影響另一側,進而實作層次鍵的松耦合

同一層如果某個接口不固定也可以通過多态封裝變化點,簡單工廠的使用就是例子

面向對象的常用原則

1.“開-閉”原則(Open-Close Principle OCP)

限制對象如何對可變性封裝問題

一個軟體系統應當對擴充開放,對修改關閉

添加新功能時應該隻是向代碼集中添加新的代碼,不應該修改原本的代碼

2.裡氏替代原則(Liskov Substitution Principle LSP)

限制子類和父類如何替換的問題

要求子類可以無條件的替代父類,例如多态的時候使用父類類型作為參數,但是實際傳遞的還是子類對象

3.依賴倒轉原則(Dependence Inversion Principle DIP)

要求開發中針對接口程式設計(業務依賴于接口,而不是實作)

在進行業務設計時,應盡量在接口或抽象類中定義業務方法,并且通過具體的實作類(或子類)來實作業務方法

業務方法的修改将不會影響到運作時業務方法的調用

4.聚合複用原則(Composite/Aggregate Reuse Principle CARP)

盡量使用組合/聚合、盡量不要使用繼承

在一個新的對象裡面使用一些已有的對象,使之成為新的對象的一部分

新的對象通過向這些對象的委派達到複用這些對象的目的

5.迪米特法則(Law Of Demeter LOD)

耦合度問題:盡量“不要和陌生人說話”

一個軟體實體應當盡可能少的與其他實體發生互相作用

初衷在于降低類之間的耦合。由于每個類盡量減少對其他類的依賴,是以,很容易使得系統的功能子產品獨立,互相之間不存在依賴關系

6.接口隔離原則(Interface Separate Principle ISP)

要求接口的職責單一

使用多個專門的接口比使用單一的總接口要好,也就是說,一個類對另外一個類的依賴性應當是建立在最小的接口上

7.其他原則:類的職責明确原則等。。。

繼續閱讀