Когда читаю различные туториалы, да и наш любимый StackOverflow, то часто вижу подобный код
namespace MvcApplication2.Models
{
public class Category
{
public int ID { get; set; }
public string Name { get; set; }
}
public class Product
{
public ICollection
public Product()
{
CategoryID = new List
Объясните зачем свойство CategoryID объявлять как интерфейс ICollection, если в конструкторе он явно инициализируется при помощи List?
Что пытается избежать проектировщик при таком подходе?
Я понимаю если бы в класс Product внедрялась какая-то зависимость через его конструктор. Но этого ведь нет.
Какой концептуальный момент я упустил?
Ответ
Значение торчит наружу и клиентский код не знает, что там List. То есть, по велению левой пятки архитектора, в новой версии библиотеки List может быть заменено на LinkedList и никто не пострадает. Это абстракция над реализацией коллекции.
Комментариев нет:
Отправить комментарий