Hay algunos temas que surgen de esta pregunta:
- interfaces versus clases
- ¿Qué clase específica, de varias clases similares, colección, lista, matriz?
- Clases comunes frente a colecciones de subelementos ("genéricos")
Es posible que desee resaltar que es una API orientada a objetos
interfaces versus clases
Si no tienes mucha experiencia con las interfaces, te recomiendo que sigas las clases. Veo muchas veces a los desarrolladores saltar a las interfaces, incluso si no es necesario.
Y, terminar haciendo un diseño de interfaz deficiente, en lugar de un buen diseño de clase, que, por cierto, eventualmente se puede migrar a un buen diseño de interfaz ...
Verá muchas interfaces en la API, pero no se apresure a buscarlas si no las necesita.
Eventualmente aprenderá a aplicar interfaces a su código.
¿Qué clase específica, de varias clases similares, colección, lista, matriz?
Hay varias clases en c # (dotnet) que se pueden intercambiar. Como ya se mencionó, si necesita algo de una clase más específica, como "CanBeSortedClass", hágalo explícito en su API.
¿Su usuario de API realmente necesita saber que su clase se puede ordenar o aplicar algún formato a los elementos? Luego use "CanBeSortedClass" o "ElementsCanBePaintedClass", de lo contrario use "GenericBrandClass".
De lo contrario, use una clase más general.
Clases de colección comunes versus colecciones de subelementos ("genéricos")
Verá que hay clases que contienen otros elementos y puede especificar que todos los elementos deben ser de un tipo específico.
Las colecciones genéricas son aquellas clases que puede usar la misma colección, para varias aplicaciones de código, sin tener que crear una nueva colección, para cada nuevo tipo de subelemento, como este: Colección .
¿Su usuario de API va a necesitar un tipo muy específico, igual para todos los elementos?
Usa algo como List<WashingtonApple>
.
¿Su usuario de API necesitará varios tipos relacionados?
Exponer List<Fruit>
para su API, y utilizar List<Orange>
List<Banana>
, List<Strawberry>
internamente, en donde Orange
, Banana
y Strawberry
son descendientes de Fruit
.
¿Su usuario de API necesitará una colección de tipos genéricos?
Use List
, donde están todos los artículos object
.
Salud.