前些天,在朋友那看到一本書《你必須知道的.NET》,得知本書是我們的部落格園裡面的一位高手寫的。我很迫切的接到了這本書,一個星期的時間我把它看完了,我完全沉浸在本書中,有時候看的忘了時間。甚至是連腳凍的發麻都不知道。對於精華的部分,我做了點筆記。有的我拿出來和大家分享。如有機會的話,可以把那本書賣下來。
GOF 說道:好的設計,成就好的作品。但在軟體設計的過稱中,在原則的規範下,那我們的軟體會重構的更好。下面是個人總結的:
三大基本物件導向設計原則
---針對介面編程,而不是針對實現編程
---優先使用對象組合,而不是類繼承
---封裝變化點
幾條更具體的設計原則:
1、單一職責(SRP,Sign Responsible Principle)
核心思想:一個類,最好只做一件事情,應該僅有一個引起它變化的原因(高高內聚、低耦合)
2、開放封閉原則(OCP,Open Closed Principle)
核心思想:類別模組應該是課擴充的,但是不可修改(對擴充開放,對更改封閉)
l 對擴充開放,意味著有新的需求變化時,可以對現有代碼進行擴充,適應新要求。
l 對更改封閉,意味著類一旦完成就可以獨立完成其工作,而不需要對類變更。
3、Liskov替換原則(LSP)
核心思想:子類必須能夠替換它們的基類。
4、依賴倒置原則(DIP,Dependency Inversion Principle)
核心思想:依賴於抽象。
l 高層模組不應該依賴底層模組,二者都應該依賴於抽象。
l 抽象不應該依賴於實現細節,實現細節應該依賴於抽象。
5、介面隔離原則(ISP, Interface Segregation Principle)
核心思想:使用多個小的專門的介面,而不要使用大的總介面。
l 介面應該是內聚的,應該避免出現“胖介面”。
l 一個類對另一個類的依賴應該建立在最小介面上,不要強迫依賴不用的方法,這是一種介面汙染。
6、合成"彙總複用原則(CARP, Composite/Aggregate Reuse Principle)
核心思想:在新對象中已有對象,使之成為就對象的成員,從而通過操作這些對象應該儘可能少的和其他軟體實體發生相互作用。
這裡面都是設計模式中常用的規則。