Ho un programma che comunica con un'API per ottenere informazioni su diverse organizzazioni, quindi ho una classe Organization
e una classe ApiCall
che sono entrambe strettamente correlate. Poiché l'API che sto utilizzando richiede token, endpoint e autenticazioni URL da utilizzare a seconda dell'organizzazione che sto cercando di ottenere dati, utilizzo un'istanza diversa di ApiCall
per ogni istanza di Organization
(in pratica un 1 -1 relazione).
Quindi la prima cosa che viene in mente è di avere un'istanza ApiCall
come una proprietà di Organization
, tuttavia la classe api ha diversi metodi che possono alterare o aggiornare i dati dalla classe Organization
.
Quindi ci sono molti modi per implementarlo. Personalmente stavo considerando 4 di loro:
- Un riferimento circolare, dove Organizzazione detiene un'istanza ApiCall come proprietà e
ApiCall
contiene un'istanzaOrganization
- Potrei avere ApiCall come una classe annidata in
Organization
, tuttavia entrambe le classi sono abbastanza grandi (> 300 linee), quindi non mi piace l'idea di unirle. Quindi forseOrganization
come una classe parziale in cui un file ha l'implementazione dei metodiOrganization
e l'altro file ha l'implementazione della classe nidificata (ApiCall
)? - avere una
Dictionary
condivisa sul programma correlando le istanzeOrganization
eApiCall
- Dividi
Organization
in 2 classi,OrgData
eOrgActions
, doveOrgActions
riferimentiApiCall
eOrgData
eApiCall
riferimentiOrgData
Al momento mi sto appoggiando alle alternative 2 o 4, ma mi stavo chiedendo quale sarebbe stata la scelta migliore per gli altri.