Quale modello di progettazione dovrei usare per realizzare 3 oggetti liberamente accoppiati e incapsulati?

4

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.

    
posta Grim 27.02.2017 - 18:14
fonte

2 risposte

1

Penso che il "modello strategico" di pari livello sia leggermente più vicino. Il mediatore è più che altro per consentire agli oggetti liberamente accoppiati di parlare tra loro attraverso il Mediatore. La strategia consiste più nello scegliere il giusto oggetto liberamente associato per soddisfare la richiesta.

In un diverso playbook di pattern, c'è il pattern "Service Locator", che sembra anche adattarsi.

In pratica, in genere crei un'interfaccia di servizio e servizi concreti che aderiscono all'interfaccia. Potresti sfruttare un contenitore DI come Localizzatore di servizio.

    
risposta data 27.02.2017 - 19:38
fonte
2

A prima vista sembra essere un buon esempio per utilizzare il schema del mediatore .

In questo schema, un mediatore gestisce l'interazione tra gli oggetti del collega (che potrebbero essere il tuo repository e i diversi modelli di riposo). Uno dei grandi vantaggi è che sostituisce complesse interazioni da molte a molte con un paio di interazioni da uno a molti, mentre allo stesso tempo separa i colleghi.

    
risposta data 27.02.2017 - 19:08
fonte

Leggi altre domande sui tag