Estrazione del codice specifico del client. possibilità di refactoring richieste

-1

Sto affrontando un problema di progettazione. Ho un set di classi che scrive dati in formato XML, JSON o HTML per diversi client.

Ho una classe che riceve Data e un XML, JSON o HTML writer come parametro.

E questi Writer hanno un'interfaccia comune, Writer usa i Dati per creare Dati in formato speficiato. Le scritture hanno metodi come writeHead, writeBody, WriteImages, writeFooter, writeDescriptions

Ora il mio problema è che la parte Descrizioni dei Documenti è molto specifica per il cliente. Solo quella parte specifica sembra completamente diversa per ogni cliente, ma il resto del documento è lo stesso.

Devo usare writeDescriptions come factory che chiama la funzione writeDescriptions di clientSpefic? poi ho un altro problema che ho molti formati diversi come JSON, HTML, XML ....

Quale sarà il modo migliore di Hanlde è sitution?

    
posta user3733648 13.03.2015 - 16:31
fonte

1 risposta

0

Now my problem is that Descriptions part of the Documents is very client specific. Only that specific part looks completly different for each client but the rest of the Document is same.

Should I use writeDescriptions as a factory which calls clientSpefic writeDescriptions function? then I have another problem that I have many different formates like JSON,HTML,XML....

Una fabbrica che hai descritto è un approccio ragionevole alla risoluzione di questo problema. Non c'è modo di aggirare il fatto che ogni client ha il proprio formato per la descrizione, quindi nascondi i dettagli di implementazione dietro il metodo writeDescriptions come hai descritto.

Dato che hai più formati di output (JSON, HTML, ...) dovrai passare tali informazioni in modo che writeDescriptions possa prendere la decisione appropriata.

Se possibile, considera di scrivere il materiale specifico del cliente in un "formato universale" e poi fai in modo che% co_de effettui una chiamata a un formattatore per la funzione di output (cioè si traduce dal "formato universale" allo specifico formato di output ). In questo modo non devi ripetere la funzionalità di output tra le diverse implementazioni del client.

Pensiero aggiuntivo: È possibile che tu possa imbatterti in un problema usando uno schema di fabbrica come questo, ma è un uso abbastanza tipico. Non preoccuparti di questi problemi futuri finché non si verificano effettivamente. A quel punto, hai una nuova domanda di progettazione sull'effetto di "Ho avuto un problema XYZ e ho risolto una fabbrica.La fabbrica ha introdotto il problema ABC. Come dovrei risolvere?"

    
risposta data 13.03.2015 - 16:30
fonte

Leggi altre domande sui tag