Il y a quelques sujets qui découlent de cette question:
- interfaces contre classes
- quelle classe spécifique, parmi plusieurs classes identiques, collection, liste, tableau?
- Classes communes et collections de sous-éléments ("génériques")
Vous voudrez peut-être souligner que c'est une API orientée objet
interfaces contre classes
Si vous n'avez pas beaucoup d'expérience avec les interfaces, je vous recommande de vous en tenir aux classes. Je vois souvent des développeurs sauter aux interfaces, même si ce n'est pas nécessaire.
Et, finissez par faire une mauvaise conception d'interface, au lieu d'une bonne conception de classe, qui, d'ailleurs, peut éventuellement être migrée vers une bonne conception d'interface ...
Vous verrez beaucoup d'interfaces dans l'API, mais ne vous précipitez pas, si vous n'en avez pas besoin.
Vous apprendrez éventuellement à appliquer des interfaces à votre code.
quelle classe spécifique, parmi plusieurs classes identiques, collection, liste, tableau?
Il existe plusieurs classes en c # (dotnet) qui peuvent être interchangées. Comme déjà mentionné, si vous avez besoin de quelque chose d'une classe plus spécifique, telle que "CanBeSortedClass", rendez-le explicite dans votre API.
Votre utilisateur d'API a-t-il vraiment besoin de savoir que votre classe peut être triée ou d'appliquer un format aux éléments? Ensuite, utilisez "CanBeSortedClass" ou "ElementsCanBePaintedClass", sinon utilisez "GenericBrandClass".
Sinon, utilisez une classe plus générale.
Classes de collection communes et collections de sous-éléments ("génériques")
Vous constaterez qu'il existe des classes qui contiennent d'autres éléments, et vous pouvez spécifier que tous les éléments doivent être d'un type spécifique.
Les collections génériques sont ces classes que vous pouvez utiliser la même collection, pour plusieurs applications de code, sans avoir à créer une nouvelle collection, pour chaque nouveau type de sous-élément, comme ceci: Collection .
L'utilisateur de votre API va-t-il avoir besoin d'un type très spécifique, identique pour tous les éléments?
Utilisez quelque chose comme List<WashingtonApple>
.
Votre utilisateur d'API aura-t-il besoin de plusieurs types connexes?
Exposer List<Fruit>
pour votre API, et utiliser List<Orange>
List<Banana>
, en List<Strawberry>
interne, où Orange
, Banana
et Strawberry
sont les descendants de Fruit
.
Votre utilisateur d'API aura-t-il besoin d'une collection de types génériques?
Utilisez List
, où se trouvent tous les éléments object
.
À votre santé.