物件導向(摘錄)

iDotNetSpace發表於2008-09-25
以下是一些概念性的東西。。平時看到好的,覺得不錯的就摘錄下來。。
規則制勝
--密封類不可以被繼承。
--繼承關係中,我們更多的是關注其共性而不是特性,因為共性是層次複用的基礎,而特性是系統擴充套件的基點。
--實現單繼承,介面多繼承。
--從巨集觀來看,繼承多關注於共通性;而多型多著眼於差異性。
--繼承的層次應該有所控制,否則型別之間的關係維護會消耗更多的精力。
--物件導向原則:多組合,少繼承;低偶合,高內聚。

介面之規則
關於介面的規則,可以有以下的歸納:
--介面隔離原則強調介面應該被實現為具有單一功能的小介面,而不要實現為具有多個功能的胖介面,類對於類的依賴應建立在最小的介面之上。
--介面支援多繼承,即可以作用於值型別,也可以作用於引用型別。
--禁止為已經發布的介面,新增新的成員,這意味著你必須重新修改所有實現了該介面的型別,在實際的應用中,這往往是不可能完成的事情。
--介面不能被例項化,沒有建構函式,介面成員被隱式宣告為Public。
--介面可以作用於值型別和引用型別,並且支援多繼承
多型的規則和意義
--多型提供了對同一類物件的差異化處理方式,實現了對變化和共性的有效封閉和繼承,體現了“一個介面,多種方法”的思想,使方法抽象機制成為可能。
--在.NET中,預設情況下方法是非虛的,以C#為例必須顯示地通過virtual或者abstract標記為虛方法或者抽象方法,以便在子類中覆寫父類方法。
--在物件導向的基本要素中,多型和繼承,多太和過載存在緊密的聯絡,多型的基礎是建立有效的繼承體系,因此繼承和過載是多型的實現基礎。
封裝規則
現在,我們對封裝特性的規則做一個總結,這些規則就是在平常的實踐中提煉與完善出來的良藥,我們在進行實際的開發和設計工作時,應儘量遵守規則,而不是盲目的尋求方法。

--儘可能地呼叫類的訪問器,而不是成員,即使在類的內部。
--內部私有部分可以任意更改,但是一定要在保證外部介面穩定的前提下。
--將對欄位的讀寫控制實現為屬性,而不是方法,否則舍近而求遠,非明智之選。
--類封裝是由訪問許可權來保證的,對內實現為private,對外實現為public。再結合繼承特性,還要對protected,internal有較深的理解。
--封裝的精華是封裝變化。張逸《軟體設計精要與模式》一書中指出,封裝變化是物件導向思想的核心,他提到開發者應從設計角度和使用角度兩方面來分析封裝。因此,我們將系統中變化頻繁的部分封裝為獨立的部分,這種隔離選擇有得於充分的軟體複用和系統柔性。
繼承
--繼承是可傳遞的,子類對父類的擴充套件,必須繼承父類方法,同時可以新增新方法。
--子類可以呼叫父類方法和欄位,而父類不能呼叫子類方法和欄位。
--虛方法如何實現覆寫操作,使得父類指標可以指向子類物件成員。
--new關鍵字在虛方法繼承中的阻斷作用。

總結:
  通常而言,良好的設計必然是面向抽象的,介面是實現這一思想的完美手段之一。通過面向介面程式設計,保證了系統的職責清晰分離,實體與實體之間保持相對合適的偶合度,尤其是高層模組不再依賴於底層模組,而依賴比較穩定的抽象,使得低層的更改不會婆及到高層,實現了良好的設計架構。
  透徹地瞭解介面,認識對介面程式設計,體會物件導向的設計原則,是培養一個良好設計習慣的開端

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-462858/,如需轉載,請註明出處,否則將追究法律責任。

相關文章