Comunicazione di sistema: evitare l'inclusione di una grande gerarchia "HAS-A" che non viene utilizzata

1

La situazione:

Sistema A

Sistema enorme e complicato. Usa un oggetto Message importante con molti altri oggetti Message allegati, molti dei quali hanno allegati ulteriori oggetti Message. In totale, si tratta di una ventina di oggetti diversi.

A causa del tempismo imbarazzante con le versioni e dell'introduzione di code churn, il sistema A non può avere la sua gerarchia degli oggetti Messaggio toccata.

Sistema B

È necessario utilizzare lo stesso oggetto Message importante per comunicare con il sistema A per utilizzare uno dei suoi servizi. Tuttavia, poiché i messaggi che invierà saranno invariabili, utilizza solo una porzione molto piccola della gerarchia dell'oggetto Messaggio.

La domanda:

Come potrei permettere al Sistema B di utilizzare l'importante oggetto Messaggio senza (a) toccare Sistema A, o (b) includendo una gerarchia di circa venti oggetti, quasi nessuno dei quali è usato affatto? Esiste un modello di progettazione più avanzato che potrebbe essere utilizzato in questo scenario?

    
posta Phillip Carter 01.04.2014 - 19:21
fonte

2 risposte

0

Il modo in cui ho finito per risolverlo era quello di andare come "bare-bones" e il più possibile simile a REST.

Il sistema A ha alcune funzioni che non contengono alcun oggetto messaggio; piuttosto accettano la quantità minima di dati per creare oggetti messaggio propri, quindi usano quelli. Il sistema A accetta questi dati come http.

Il sistema B ha, come risultato, un po 'di hard-coding coinvolto. Ciascuno dei valori per una chiamata particolare al sistema A viene gettato in un oggetto anonimo, che viene quindi convertito in un parametro URL per effettuare una chiamata REST.

Il numero totale di codici è meno generale e il sistema B non ha una gerarchia di oggetti massiccia, per lo più inutile, copiata dal sistema A.

    
risposta data 04.05.2014 - 20:48
fonte
1

Usa la facciata (o eventualmente l'adattatore) per creare la tua interfaccia interna nel sistema di messaggi e avvolgerla intorno & nascondi le classi dei messaggi esterni.

link

  • Al momento del test, questo rende più facile lo stub o il mock, perché devi solo fare falsi per la tua facciata.

  • In fase di esecuzione, la facciata può interagire con la gerarchia reale, complicata e ridondante in modo trasparente. Dissocia il tuo codice dall'implementazione esterna.

risposta data 01.04.2014 - 19:34
fonte