- 請記住,物件導向思想的一個最重要的原則就是:面向介面程式設計。
- 藉助介面和抽象類,23個設計模式中的很多思想被巧妙的實現了,我認為其精髓簡單說來就是:面向抽象程式設計。
- 抽象類應主要用於關係密切的物件,而介面最適合為不相關的類提供通用功能。
- 介面著重於CAN-DO關係型別,而抽象類則偏重於IS-A式的關係;
- 介面多定義物件的行為;抽象類多定義物件的屬性;
- 介面定義可以使用public、protected、internal 和private修飾符,但是幾乎所有的介面都定義為public,原因就不必多說了。
- “介面不變”,是應該考慮的重要因素。所以,在由介面增加擴充套件時,應該增加新的介面,而不能更改現有介面。
- 儘量將介面設計成功能單一的功能塊,以.NET Framework為例,IDisposable、IDisposable、IComparable、IEquatable、IEnumerable等都只包含一個公共方法。
- 介面名稱前面的大寫字母“I”是一個約定,正如欄位名以下劃線開頭一樣,請堅持這些原則。
- 在介面中,所有的方法都預設為public。
- 如果預計會出現版本問題,可以建立“抽象類”。例如,建立了狗(Dog)、雞(Chicken)和鴨(Duck),那麼應該考慮抽象出動物(Animal)來應對以後可能出現風馬牛的事情。而向介面中新增新成員則會強制要求修改所有派生類,並重新編譯,所以版本式的問題最好以抽象類來實現。
- 從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實實現。
- 對抽象類不能使用new關鍵字,也不能被密封,原因是抽象類不能被例項化。
- 在抽象方法宣告中不能使用 static 或 virtual 修飾符。
-
.NET Framework是學習的最好資源,有意識的研究FCL是每個.NET程式設計師的必修課,關於介面和抽象類在FCL中的使用,我有以下的建議:
- FCL對集合類使用了基於介面的設計,所以請關注System.Collections中關於介面的設計實現;
- FCL對資料流相關類使用了基於抽象類的設計,所以請關注System.IO.Stream類的抽象類設計機制。
你必須知道的.net讀書筆記之第二回深入淺出關鍵字—對抽象程式設計:介面和抽象類
相關文章
- is 和 as 讀你必須知道的.net 筆記筆記
- using 你知道多少?你必須知道的.NET讀書筆記筆記
- Java學習筆記之介面和抽象類Java筆記抽象
- Java關鍵字之abstract(抽象類的概念和使用)Java抽象
- Const和Readonly大比拼讀你必須知道的.net讀書筆記筆記
- 深入理解Java的介面和抽象類Java抽象
- 有關“抽象類”和“介面”的異同之處?抽象
- 介面和抽象類抽象
- 抽象類和介面抽象
- 介面的行為抽象和抽象類的行為抽象抽象
- 介面、抽象類、普通類之間的關係抽象
- 面向介面程式設計實踐之aspnetcoreapi的抽象程式設計NetCoreAPI抽象
- 抽象類和介面,你瞭解多少?抽象
- 架構師帶你深入理解Java的介面和抽象類架構Java抽象
- 深入淺出node讀書筆記筆記
- 《深入淺出MySQL》讀書筆記MySql筆記
- 介面和抽象類 (abstract)抽象
- 深入理解java的抽象類和介面(轉載)Java抽象
- java抽象類與介面——設計模式Java抽象設計模式
- New的幾個問題 詳解 --讀你必須知道的.NET筆記筆記
- 【JAVA】筆記(5)--- final;抽象方法;抽象類;介面;解析繼承,關聯,與實現;Java筆記抽象繼承
- 深入淺出Nodejs讀書筆記NodeJS筆記
- 關於抽象類和介面的初步理解抽象
- 介面和抽象類的區別抽象
- JMockit學習之mock介面和抽象類Mock抽象
- java中抽象類和介面Java抽象
- 介面和抽象類詳解抽象
- 抽象方法和抽象類抽象
- 抽象類和抽象方法抽象
- Java的抽象類 & 介面Java抽象
- 抽象類與介面抽象
- 抽象類VS介面抽象
- 介面與抽象類抽象
- Java抽象(方法,類)和Java的介面Java抽象
- Java中的介面與抽象類設計原則Java抽象
- [.net 物件導向程式設計基礎] (15) 抽象類物件程式設計抽象
- Java基礎-抽象類和介面Java抽象
- 抽象類和介面的區別抽象