Ho provato a esaminare vari schemi di progettazione per risolvere un problema che sto riscontrando. Voglio che tre oggetti siano accoppiati liberamente e incapsulati.
-
Oggetto 1: Spring Data Repository:
Un oggetto per esporre il livello di persistenza.
-
Oggetto 2: oggetto di servizio Template Rest:
Un oggetto che esegue azioni su un'API REST e contiene vari metodi per i diversi punti finali. Il JSON è deserializzato in una classe Order specificamente adattata a questa risposta.
-
Oggetto 3: Rest Service Object:
Un oggetto diverso dall'oggetto 2 che esegue azioni su una API REST diversa. Il JSON è serializzato su una classe Order specificamente adattata a questa risposta.
Il problema che sto avendo è che voglio essere in grado di avere i tre oggetti liberamente accoppiati e rendere più semplice l'aggiunta di nuovi oggetti di servizio modello di riposo o modificare il repository specificato. Più tardi potrei aggiungere un'autorizzazione come, non puoi usare questo oggetto servizio ma puoi usare gli oggetti servizio 3, 4 o 5. Attualmente ho un oggetto che ora funge da intermediario per l'oggetto servizio 1 e l'oggetto servizio 2. Il L'oggetto middle man contiene una variabile di istanza per l'oggetto repository. Attualmente l'oggetto uomo medio è strettamente accoppiato a tutti e tre gli oggetti. Qual è l'approccio migliore per rendere questi tre oggetti liberamente accoppiati? Ho osservato lo schema del mediatore, ma non sono sicuro che sia l'approccio migliore. Sto praticando modelli di design e sono incappato in questo problema.
Un po 'di più sul dominio del problema. I dati memorizzati localmente sono ordini generati. Gli oggetti servizio sono punti finali REST che richiedono la notifica del nuovo ordine. Questo è solo uno dei punti finali, mentre altri sarebbero annullati per l'ordine X. Quindi, quando viene creato il nuovo ordine, il database viene aggiornato con il nuovo ordine. A una certa ora del giorno, il nuovo ordine viene creato nei vari punti di fine REST utilizzando gli oggetti servizio.
Se sono necessarie ulteriori informazioni sarei più che felice di includerlo. Sto praticando modelli di progettazione e mi sono imbattuto in questo problema, quindi non sono affatto un esperto.