簡體   English   中英

什么是ICollection的返回類型 <Person> 意思?

[英]What does return type of ICollection<Person> mean?

我正在查看Entity Framework 4的一些代碼示例,作者創建了一個返回ICollection <Person>的方法。 我知道ICollection是一個接口。 我知道Person是集合中的對象類型。 我知道我正在收回一些人物。

這個問題。 為什么選擇ICollection? 為什么不列出<>? 為什么這樣使用接口? 我已經將接口用作類的“藍圖”,指定了所需的成員,但我並不真正理解這里的用法。

在公共API中返回接口而不是具體類通常會更好。

這允許實現稍后更改。 例如,它實際上可能正在返回List<T> 然而,稍后,可以進行優化以返回可以具有更好的存儲器效率,允許流傳輸或許多其他優點之一的不同類型的集合。 只要該類仍然實現ICollection<T> ,該實現可以自由切換而不會導致API更改中斷。

GoF設計模式書的一個關鍵點是編程到接口,而不是實現。 其原因是它提供的自由。 通過返回接口而不是特定類型,將來可以更容易地更改實現,而不會影響調用代碼。

除非您的用戶想要它,否則您的API應盡可能少地公開實現細節,在這種情況下,使用List<Person>是實現細節。 例如,如果您或您的用戶知道他們想要通過索引訪問結果集,那么最好還是返回IList<Person>而不是ICollection<Person> ,但如果您不確定用戶場景,則應該公開最基本的抽象你可以(即在這種情況下可能IEnumerable<Person>就足夠了)。

請記住,如果最近您決定使用更多派生返回類型,它不會破壞任何現有客戶端,但您不能使用更多基於返回類型而不會破壞其中一些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM