何時使用委託而不使用接口(C# 編程指南)

何時使用委託而不使用接口(C# 編程指南) 

委託和接口都允許類設計器分離類型聲明和實現。給定的接口可由任何類或結構繼承和實現;可以爲任何類中的方法創建委託,前提是該方法符合委託的方法簽名。接口引用或委託可由不瞭解實現該接口或委託方法的類的對象使用。既然存在這些相似性,那麼類設計器何時應使用委託,何時又該使用接口呢?

在以下情況中使用委託:

當使用事件設計模式時。

當封裝靜態方法可取時。

當調用方不需要訪問實現該方法的對象中的其他屬性、方法或接口時。

需要方便的組合。

當類可能需要該方法的多個實現時。

在以下情況中使用接口:

當存在一組可能被調用的相關方法時。

當類只需要方法的單個實現時。

當使用接口的類想要將該接口強制轉換爲其他接口或類類型時。

當正在實現的方法鏈接到類的類型或標識時:例如比較方法。

使用單一方法接口而不使用委託的一個很好的示例是 IComparable 或 IComparable。IComparable 聲明 CompareTo 方法,該方法返回一個整數,以指定相同類型的兩個對象之間的小於、等於或大於關係。IComparable 可用作排序算法的基礎,雖然將委託比較方法用作排序算法的基礎是有效的,但是並不理想。因爲進行比較的能力屬於類,而比較算法不會在運行時改變,所以單一方法接口是理想的。

請參見
參考
方法(C# 編程指南)
接口(C# 編程指南)

概念
C# 編程指南
事件(C# 編程指南)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章