2008-09-17 8 views
5

Esiste uno schema che è utile quando si salvano e si caricano formati di file diversi?Schema per il salvataggio e la scrittura in diversi formati di file

Ad esempio, ho una gerarchia di classi complicata per il documento, ma desidero supportare alcuni formati di file diversi.

ho pensato al modello di strategia, ma non sono convinto a causa della necessità di accedere ad ogni parte dell'oggetto al fine di salvare e caricarlo.

risposta

2

È possibile utilizzare un Visitor Pattern, che consente di eseguire iterazioni sulla propria gerarchia eseguendo operazioni diverse a seconda del nodo che il visitatore sta attualmente elaborando.

Cattive notizie: probabilmente è necessario aggiungere almeno un metodo virtuale nella parte superiore della gerarchia, e magari ridefinirlo in alcune classi derivate e il visitatore accederà ancora ai dati dei nodi, ma si disaccoppierà il formato del file , poiché le diverse implementazioni dei visitatori possono scrivere i dati raccolti in modi diversi.

date un'occhiata anche al memento pattern se nascondere i dati di classe gerarchia è un must. This article potrebbe anche essere utile.

Edit: Link alla originale Memento pattern article utilizzando cache di Google

+0

Il tuo link per l'articolo per il modello ricordo è rotto. Ne hai un'altra buona? –

+0

Wow, sono stato come 7 anni; e non ricordo nemmeno il nome dell'articolo, scusa –

+0

buone notizie, trovato usando la cache di google: http://webcache.googleusercontent.com/search?q=cache:www.ondotnet.com/pub/a/dotnet/ 2002/09/09/memento.html –

1

Si potrebbe voler dare un'occhiata al modello Builder. GoF pagina 97 ..

0

Come su (qualcosa basato su) Template method pattern?

Una superclasse sa come fare a pezzi la gerarchia delle classi, ma si basa sulle sue sottoclassi di fare effettivamente qualcosa di utile con esso.