Ci sono alcuni argomenti che derivano da questa domanda:
- interfacce contro classi
- quale classe specifica, da diverse classi, raccolte, elenchi, array simili?
- Classi comuni e raccolte di elementi secondari ("generici")
Potresti sottolineare che è un'API orientata agli oggetti
interfacce contro classi
Se non hai molta esperienza con le interfacce, ti consiglio di attenersi alle lezioni. Vedo molte volte che gli sviluppatori saltano alle interfacce, anche se non è necessario.
E, finisci con un design di interfaccia scadente, invece di un buon design di classe, che, a proposito, può alla fine essere migrato a un buon design di interfaccia ...
Vedrai molte interfacce nell'API, ma non affrettarti, se non ne hai bisogno.
Alla fine imparerai come applicare le interfacce al tuo codice.
quale classe specifica, da diverse classi, raccolte, elenchi, array simili?
Esistono diverse classi in c # (dotnet) che possono essere scambiate. Come già accennato, se hai bisogno di qualcosa da una classe più specifica, come "CanBeSortedClass", rendilo esplicito nella tua API.
Il tuo utente API ha davvero bisogno di sapere che la tua classe può essere ordinata o applicare un formato agli elementi? Quindi usa "CanBeSortedClass" o "ElementsCanBePaintedClass", altrimenti usa "GenericBrandClass".
Altrimenti, usa una classe più generale.
Classi di raccolte comuni e raccolte di elementi secondari ("generici")
Scoprirai che esistono classi che contengono altri elementi e puoi specificare che tutti gli elementi devono essere di un tipo specifico.
Le raccolte generiche sono quelle classi che è possibile utilizzare la stessa raccolta, per diverse applicazioni di codice, senza dover creare una nuova raccolta, per ogni nuovo tipo di elemento secondario, come questa: Raccolta .
Il tuo utente API avrà bisogno di un tipo molto specifico, uguale per tutti gli elementi?
Usa qualcosa di simile List<WashingtonApple>
.
Il tuo utente API avrà bisogno di diversi tipi correlati?
Esporre List<Fruit>
per la vostra API, e utilizzare List<Orange>
List<Banana>
, List<Strawberry>
internamente, dove Orange
, Banana
e Strawberry
sono discendenti da Fruit
.
Il tuo utente API avrà bisogno di una raccolta di tipi generici?
Usa List
, dove sono tutti gli articoli object
.
Saluti.