物件導向(摘錄)
以下是一些概念性的東西。。平時看到好的,覺得不錯的就摘錄下來。。
規則制勝
--密封類不可以被繼承。
--繼承關係中,我們更多的是關注其共性而不是特性,因為共性是層次複用的基礎,而特性是系統擴充套件的基點。
--實現單繼承,介面多繼承。
--從巨集觀來看,繼承多關注於共通性;而多型多著眼於差異性。
--繼承的層次應該有所控制,否則型別之間的關係維護會消耗更多的精力。
--物件導向原則:多組合,少繼承;低偶合,高內聚。
介面之規則
關於介面的規則,可以有以下的歸納:
--介面隔離原則強調介面應該被實現為具有單一功能的小介面,而不要實現為具有多個功能的胖介面,類對於類的依賴應建立在最小的介面之上。
--介面支援多繼承,即可以作用於值型別,也可以作用於引用型別。
--禁止為已經發布的介面,新增新的成員,這意味著你必須重新修改所有實現了該介面的型別,在實際的應用中,這往往是不可能完成的事情。
--介面不能被例項化,沒有建構函式,介面成員被隱式宣告為Public。
--介面可以作用於值型別和引用型別,並且支援多繼承
多型的規則和意義
--多型提供了對同一類物件的差異化處理方式,實現了對變化和共性的有效封閉和繼承,體現了“一個介面,多種方法”的思想,使方法抽象機制成為可能。
--在.NET中,預設情況下方法是非虛的,以C#為例必須顯示地通過virtual或者abstract標記為虛方法或者抽象方法,以便在子類中覆寫父類方法。
--在物件導向的基本要素中,多型和繼承,多太和過載存在緊密的聯絡,多型的基礎是建立有效的繼承體系,因此繼承和過載是多型的實現基礎。
封裝規則
現在,我們對封裝特性的規則做一個總結,這些規則就是在平常的實踐中提煉與完善出來的良藥,我們在進行實際的開發和設計工作時,應儘量遵守規則,而不是盲目的尋求方法。
--儘可能地呼叫類的訪問器,而不是成員,即使在類的內部。
--內部私有部分可以任意更改,但是一定要在保證外部介面穩定的前提下。
--將對欄位的讀寫控制實現為屬性,而不是方法,否則舍近而求遠,非明智之選。
--類封裝是由訪問許可權來保證的,對內實現為private,對外實現為public。再結合繼承特性,還要對protected,internal有較深的理解。
--封裝的精華是封裝變化。張逸《軟體設計精要與模式》一書中指出,封裝變化是物件導向思想的核心,他提到開發者應從設計角度和使用角度兩方面來分析封裝。因此,我們將系統中變化頻繁的部分封裝為獨立的部分,這種隔離選擇有得於充分的軟體複用和系統柔性。
繼承
--繼承是可傳遞的,子類對父類的擴充套件,必須繼承父類方法,同時可以新增新方法。
--子類可以呼叫父類方法和欄位,而父類不能呼叫子類方法和欄位。
--虛方法如何實現覆寫操作,使得父類指標可以指向子類物件成員。
--new關鍵字在虛方法繼承中的阻斷作用。
總結:
通常而言,良好的設計必然是面向抽象的,介面是實現這一思想的完美手段之一。通過面向介面程式設計,保證了系統的職責清晰分離,實體與實體之間保持相對合適的偶合度,尤其是高層模組不再依賴於底層模組,而依賴比較穩定的抽象,使得低層的更改不會婆及到高層,實現了良好的設計架構。
透徹地瞭解介面,認識對介面程式設計,體會物件導向的設計原則,是培養一個良好設計習慣的開端
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-462858/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物件導向-物件導向思想物件
- 【物件導向的PHP】之模式:目錄物件PHP模式
- 物件導向與程式導向物件
- 程式導向與物件導向物件
- “程序導向”和“物件導向”物件
- 物件導向物件
- 物件導向,搞定物件物件
- JAVA物件導向基礎--物件導向介紹Java物件
- PHP 物件導向 (九)物件導向三大特徵PHP物件特徵
- PHP物件導向PHP物件
- 物件導向 -- 反射物件反射
- JavaScript 物件導向JavaScript物件
- JS物件導向JS物件
- Java物件導向Java物件
- Python——物件導向Python物件
- 物件導向--下物件
- scala物件導向物件
- 物件導向(下)物件
- Python物件導向Python物件
- 物件導向(oop)物件OOP
- [Java物件導向]Java物件
- python 物件導向Python物件
- Java — 物件導向Java物件
- 物件導向(上)物件
- python-程式導向、物件導向、類Python物件
- Java物件導向——類與物件Java物件
- Js物件導向(1): 理解物件JS物件
- php中的程式導向與物件導向PHP物件
- 初識物件導向物件
- 物件導向拾遺物件
- 物件導向--繼承物件繼承
- java物件導向(上)Java物件
- java物件導向(中)Java物件
- python物件導向(一)Python物件
- 物件導向css oocss物件CSS
- PHP物件導向(三)PHP物件
- golang 物件導向特性Golang物件
- 物件導向相關物件
- 物件導向:繼承物件繼承