面向對象六大原則
參考自:http://www.cnblogs.com/dolphin0520/p/3919839.html
【1.單一職責原則】
一個類只負責一個功能領域中的相應職責,或者可以定義為:就一個類而言,應該只有一個引起它變化的原因。
一個類不能太“累”!在軟件系統中,一個類(大到模塊,小到方法)承擔的職責越多,它被復用的可能性就越小
【2.開閉原則】
對擴展開放,對修改關閉
解耦:初始化反射解耦
事件系統解耦
策略模式、面向借口編程解耦
【3.依賴倒置原則】
依賴註入DI: http://www.cnblogs.com/zhangchenliang/archive/2013/01/08/2850726.html(十分好的文章)
在實現依賴倒轉原則時,我們需要針對抽象層編程,而將具體類的對象通過依賴註入(DependencyInjection, DI)的方式註入到其他對象中,依賴註入是指當一個對象要與其他對象發生依賴關系時,通過抽象來註入所依賴的對象。常用的註入方式有三種,分別是:構造註入,setter註入(Setter註入)和接口註入。
接口註入:策略模式、面向接口編程
【4.接口隔離原則】
使用多個專門的接口,而不使用單一的總接口
【5.裏氏替換原則】
在軟件中將一個基類對象替換成它的子類對象,程序將不會產生任何錯誤和異常,反過來則不成立
(父類可以換成子類 對象,不報錯)
【6.迪米特法則】
<MVP框架就是應用了這點,就是中間墊了一個層 >
如果一個系統符合迪米特法則,那麽當其中某一個模塊發生修改時,就會盡量少地影響其他模塊,擴展會相對容易,這是對軟件實體之間通信的限制,迪米特法則要求限制軟件實體之間通信的寬度和深度。迪米特法則可降低系統的耦合度,使類與類之間保持松散的耦合關系。
迪米特法則還有幾種定義形式,包括:不要和“陌生人”說話、只與你的直接朋友通信等,在迪米特法則中,對於一個對象,其朋友包括以下幾類:
(1) 當前對象本身(this);
(2) 以參數形式傳入到當前對象方法中的對象;
(3) 當前對象的成員對象;
(4) 如果當前對象的成員對象是一個集合,那麽集合中的元素也都是朋友;
(5) 當前對象所創建的對象。
任何一個對象,如果滿足上面的條件之一,就是當前對象的“朋友”,否則就是“陌生人”。在應用迪米特法則時,一個對象只能與直接朋友發生交互,不要與“陌生人”發生直接交互,這樣做可以降低系統的耦合度,一個對象的改變不會給太多其他對象帶來影響。
迪米特法則要求我們在設計系統時,應該盡量減少對象之間的交互,如果兩個對象之間不必彼此直接通信,那麽這兩個對象就不應當發生任何直接的相互作用,如果其中的一個對象需要調用另一個對象的某一個方法的話,可以通過第三者轉發這個調用。簡言之,就是通過引入一個合理的第三者來降低現有對象之間的耦合度。
在將迪米特法則運用到系統設計中時,要註意下面的幾點:在類的劃分上,應當盡量創建松耦合的類,類之間的耦合度越低,就越有利於復用,一個處在松耦合中的類一旦被修改,不會對關聯的類造成太大波及;在類的結構設計上,每一個類都應當盡量降低其成員變量和成員函數的訪問權限;在類的設計上,只要有可能,一個類型應當設計成不變類;在對其他類的引用上,一個對象對其他對象的引用應當降到最低。
面向對象六大原則