Есть некоторые предметы, которые приходят из этого вопроса:
- интерфейсы против классов
- какой конкретный класс, из нескольких похожих классов, коллекции, списка, массива?
- Общие классы в сравнении с коллекциями подпунктов ("дженериков")
Вы можете выделить, что это Object Oriented A.P.I.
интерфейсы против классов
Если у вас нет большого опыта работы с интерфейсами, я рекомендую придерживаться классов.
Я часто вижу, как разработчики переходят на интерфейсы, даже если это не обязательно.
И, в конце концов, сделайте плохой дизайн интерфейса, вместо хорошего дизайна класса,
который, кстати, в конечном итоге может быть перенесен на хороший дизайн интерфейса ...
В A.P.I. вы увидите много интерфейсов, но не торопитесь с этим,
если тебе это не нужно.
В конце концов вы научитесь применять интерфейсы к своему коду.
какой конкретный класс из нескольких похожих классов, коллекции, списка, массива?
В c # (dotnet) есть несколько классов, которые можно поменять местами. Как уже упоминалось, если вам нужно что-то из более специфического класса, такого как «CanBeSortedClass», то сделайте это явно в вашем A.P.I ..
Ваш А.П.И. пользователю действительно нужно знать, что ваш класс можно отсортировать или применить какой-то формат к элементам? Затем используйте «CanBeSortedClass» или «ElementsCanBePaintedClass»,
в противном случае используйте «GenericBrandClass».
В противном случае используйте более общий класс.
Классы общих коллекций по сравнению с коллекциями подпунктов ("дженериков")
Вы обнаружите, что есть классы, которые содержат другие элементы,
и вы можете указать, что все элементы должны быть определенного типа.
Общие коллекции - это те классы, которые вы можете использовать в одной коллекции,
для нескольких приложений кода, без необходимости создавать новую коллекцию,
для каждого нового типа подпункта, например: Collection .
Имеет ли ваш А.П.И. пользователю понадобится очень специфический тип, одинаковый для всех элементов?
Используйте что-то вроде List<WashingtonApple>
.
Ваш А.П.И. пользователю потребуется несколько связанных типов?
Выставьте List<Fruit>
для своего А.П., и используйте List<Orange>
List<Banana>
, List<Strawberry>
внутри, где Orange
, Banana
и Strawberry
являются потомками Fruit
.
Имеет ли ваш А.П.И. пользователю понадобится коллекция универсальных типов?
Используйте List
, где все элементы object
(s).
Приветствие.