文章出處
文章列表
前言:在一個面向對象的系統中,系統的各種功能是由許許多多的不同對象協作完成的。在這種情況下,各個對象內部是如何實現對系統設計人員來說就不那么重要;而各個對象之間的協作關系則成為系統設計的關鍵。小到不同類之間的通信,大到各模塊之間的交互,在系統設計之初都是要著重考慮的,這也是系統設計的主要工作內容。
對象是接口的實現,面向對象的設計其本質就是面向接口的設計,類和模塊之間的交互是由接口完成的,接口是定義和實現的分離。
對接口的理解:
1、接口是一些方法特征的集合,這些方法是在系統中不斷的出現。常用的接口包括:單方法接口、標識接口、不建議使用的常量接口
2、接口是更深層次的理解,應是定義(規范,約束)與實現(名實分離的原則)的分離。
3、接口的本身反映了系統設計人員對系統的抽象理解。
4、接口分為兩類,對個體的抽象,我們稱之為抽象體(abstract class);對個體某方面的抽象,我們稱之為抽象面(interface)。一個抽象體可以有多個抽象面,抽象體應當擁有盡可能多的共同代碼,擁有盡可能少的數據。
面向接口設計遵循的原則:
1、開閉原則:模塊可以不被修改的前提下擴展,面向對象設計的重要原則是創建抽象化,并且從抽象化導出具體化。
2、里氏代換原則:一個實體如果使用的是一個基類的話,那么一定適用于其子累
3、依賴倒轉原則:要依賴于抽象,不要依賴于具體
4、接口隔離原則:使用多個專門的接口,比使用單一的總接口要好
5、合成/聚合復用原則:要盡量使用合成/聚合,盡量不要使用繼承
6、迪米特法則:一個對象應當對其他對象有盡可能少的了解
1、優先考慮將一個類設置成不變類,例如:String、BigInteger等
2、盡量降低一個類的訪問權限
3、謹慎使用Serialiazble
4、盡量降低成員的訪問權限:設計一個類的方法時,應當首先考慮將其設置為private
5、取代C struct,使用屬性的getXX和setXX方法
6、在系統類得繼承等級中,樹葉節點均應當是具體類,而樹枝節點是均應當是抽象類或接口。
文章列表
全站熱搜