Costruisci un oggetto da due fonti di dati: quale modello di progettazione sarebbe adatto?

1

Dichiarazione di problemi - Devo costruire una fattura (con voci di linea, dettagli legali, dettagli di pagamento, ecc.) utilizzando le informazioni di prenotazione e pagamento di una prenotazione di hotel. Esistono due fonti per questi due punti dati (pagamento + prenotazione): uno strumento di terze parti che fornisce sia un'applicazione interna che una versione che fornisce gli stessi ma in una struttura diversa. Il motivo è che - il ciclo di vita di alcune delle prenotazioni è gestito dallo strumento esterno e il resto dall'applicazione interna.

La fattura risultante ha una struttura e uno schema fissi. Sto pensando di usare lo schema strategia allo stesso modo in cui sembra una scelta ovvia in prima istanza. Eventuali altri modelli di progettazione specifici adatti a questo caso d'uso?

EDIT - Altri modelli di progettazione che mi vengono in mente: Factory, Adapter

    
posta Utsav T 11.10.2018 - 09:24
fonte

1 risposta

2

Il modello di strategia sarebbe il migliore quando il comportamento di una classe dovrebbe essere cambiato facilmente.

There are two sources for these two data points (payment+booking) - a third party tool that gives you both and an in-house application that gives you the same but in a different structure.

Se stiamo lavorando con questa ipotesi, il pattern che stai probabilmente cercando è un Adapter . Crea una singola interfaccia per recuperare tutte le informazioni necessarie e, nell'implementazione che rappresenta ciascuna fonte di dati, restituisci le informazioni richieste.

L'adattatore può quindi essere utilizzato in modo imprevisto nel programma per generare la fattura o qualsiasi altra cosa tu richieda. Se la creazione di questi adattatori è diversa l'una dall'altra, allora potresti anche richiedere l'uso di un metodo di fabbrica o persino una fabbrica astratta .

Fammi sapere se questo risponde alla tua domanda! Se non scrivi nei commenti e correggerò la mia risposta.

    
risposta data 11.10.2018 - 09:35
fonte

Leggi altre domande sui tag