Polymorphism sull'interfaccia repository per operazioni locali e remote

1

Sono in procinto di progettare una classe di facciata ApiClient che astragga alcune operazioni CRUD tra un database locale e uno remoto (tramite un'applicazione web REST).

La classe ApiClient detta dipende da altre 2 classi di implementazione (chiamiamole local repo e remote repo , le cui responsabilità sono di interagire rispettivamente con il driver del database locale e con un client http.

Detto questo, alcune risorse (chiamiamolo ResourceA ) devono essere salvate localmente dopo essere state recuperate dalla rete, ma non possono essere salvate sulla rete. Un esempio di ciò sarebbe il recupero di un elenco di ResourceA e il salvataggio di ciascun elemento localmente, ma non c'è creazione di ResourceA né l'aggiornamento sul lato server.

Fino a questo punto, local repo dovrebbe implementare un'operazione save(ResourceA) , ma remote repo non dovrebbe.

Quindi la domanda è: queste 2 classi dovrebbero essere un'implementazione di 2 interfacce diverse ( local repo interface e remote repo interface ), o entrambe dovrebbero implementare una singola interfaccia, ma su save operazione remote repo dovrebbe lanciare un invalid operation exception ?

    
posta Christopher Francisco 07.05.2015 - 18:32
fonte

1 risposta

1

Non è chiaro dalla domanda se il repository remoto non supporta affatto operazioni di aggiunta / aggiornamento o solo per tipi specifici. In caso di prima opzione, vorrei andare con 2 interfacce: IReadonlyRepo, IWritableRepo. In caso della seconda opzione, vorrei andare con l'approccio di eccezione.

    
risposta data 08.05.2015 - 02:43
fonte