Pattern builder: separazione della costruzione dalla rappresentazione

3

Sto leggendo GoF, e l'intento del costruttore è menzionato per separare la creazione di oggetti complessi dalla sua rappresentazione.

Non sono riuscito a capire cosa significhi rappresentare in questo contesto. Cosa significa?

L'esempio di analisi del testo fornito nella sezione motivazione non sembra separare la costruzione dalla rappresentazione, ma l'algoritmo per l'interpretazione del formato testuale dalla creazione e rappresentazione del formato convertito.

    
posta q126y 01.01.2016 - 18:40
fonte

1 risposta

3

La rappresentazione dell'interesse è qui il risultato (presumibilmente) della stringa ottenuto da GetASCIIText o GetTexText .

Qualcuno deve creare un'istanza dell'estratto TextConverter ; questo non è mostrato nello schema che hai postato nella domanda.

Alcuni codici scelgono tra una delle tre sottoclassi per creare un'istanza e poi la forniscono a RTFReader .

Questo potrebbe apparire come segue:

var tx = new TexConverter ();
var rdr = new RTFReader ( tx );
rdr.ParseRTF ();
return tx.GetTexText ();

e, in un altro caso,

var cv = new ASCIIConverter ();
var rdr = new RTFReader ( cv );
rdr.ParseRTF ();
return cv.GetASCIIText ();

Con questo contesto aggiuntivo, possiamo vedere più chiaramente la separazione delle responsabilità di costruzione dalle responsabilità di rappresentazione, poiché ParseRTF viene riutilizzato invariato tra questi due frammenti anche se ogni frammento genera una rappresentazione diversa.

Inoltre, se lo volessimo, potremmo creare un'implementazione per TextConverter che ha avvolto gli altri tre e creato tutte quelle rappresentazioni con una chiamata a ParseRTF . Questo non sarebbe facile da fare se queste responsabilità non fossero separate.

Va sottolineato che in questo esempio, le strutture dati risultanti che sono costruite non devono necessariamente conformarsi tra loro, quindi, GetTexText , potrebbe, se lo si desidera, restituire un tipo diverso da stringa e diverso da %codice%; questo illustrerebbe rappresentazioni molto diverse.

    
risposta data 01.01.2016 - 19:01
fonte

Leggi altre domande sui tag