Come progettare i miei repository quando ci sono più fonti per lo stesso tipo di dati?

3

Nella mia domanda, devo ottenere dati dal nostro ERP. Per questo esempio, diciamo i dati del prodotto.

Alcuni dei dati provengono dall'API che il nostro ERP ci ha fornito, mentre alcuni provengono da chiamate dirette DB poiché l'API non ci fornisce tutti i dettagli richiesti.

Per questa situazione, faccio solo un singolo repository e nei metodi del repository ottengo i dati dal posto richiesto?

Se lo faccio, mi preoccupo di iniettare nel costruttore IApiService e anche stringhe di connessione al database che, a seconda dei dati che sto recuperando, potrebbero non essere necessari.

Creo 2 repository separati, qualcosa come ApiProductRepository e DatabaseProductRepository?

Alcuni consigli sui migliori metodi qui sarebbero fantastici!

    
posta Lock 18.07.2017 - 06:21
fonte

1 risposta

3

Creerei due implementazioni separate dell'interfaccia del repository come ApiProductRepository e DatabaseProductRepository . Ogni implementazione genererà un NotSupportedException per i metodi che non supporta. Infine crea un ErpRepository che prende un ApiProductRepository e DatabaseProductRepository e invoca l'implementazione appropriata in base al metodo.

Ecco un diagramma di classe che descrive come progetterei la soluzione

Modifica:stavorispondendoipotizzandochealcunimetodisarebberostatifornitidalDBealcunidall'API.DopoOPchiaritochealcuniattributidelmodellosarannoriempitidall'APIealcunisarannoriempitidalDB,ilprogettosopranoncoprebenequelcaso,eusereiildesignpiùsemplice:

    
risposta data 18.07.2017 - 06:54
fonte

Leggi altre domande sui tag