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.