2008-09-17 5 views
5

Existe-t-il un motif utile lors de l'enregistrement et du chargement de différents formats de fichier? Par exemple, j'ai une hiérarchie de classe compliquée pour le document, mais je veux prendre en charge quelques formats de fichiers différents.Motif d'enregistrement et d'écriture dans différents formats de fichier

Je pensais au modèle Strategy, mais je ne suis pas convaincu parce qu'il faut accéder à toutes les parties de l'objet pour le sauvegarder et le charger.

Répondre

2

Vous pouvez utiliser un Visitor Pattern, il permet d'itérer sur votre hiérarchie en effectuant différentes opérations en fonction du noeud que le visiteur est en train de traiter. Mauvaise nouvelle: vous devez probablement ajouter au moins une méthode virtuelle en haut de la hiérarchie, et peut-être la redéfinir dans certaines classes dérivées, et le visiteur accède toujours aux données des nœuds, mais vous déconnectez le format de fichier , car les implémentations de différents visiteurs peuvent écrire les données recueillies de différentes manières.

Regardez également le memento pattern si vous voulez cacher les données de la hiérarchie des classes. This article pourrait également être utile.

Edit: Lien vers le Memento pattern article original en utilisant le cache google

+0

Votre lien vers l'article pour le motif de memento est cassé. Avez-vous un autre bon? –

+0

Wow, été comme 7 ans; et je ne me souviens même pas du nom de l'article, désolé –

+0

de bonnes nouvelles, je l'ai trouvé en utilisant google cache: http://webcache.googleusercontent.com/search?q=cache:www.ondotnet.com/pub/a/dotnet/ 2002/09/09/memento.html –

1

Vous voudrez peut-être jeter un coup d'œil au modèle Builder. GoF page 97 ..

0

Que diriez-vous de (quelque chose basé sur) le Template method pattern? Une super-classe sait comment déchirer la hiérarchie des classes, mais s'appuie sur ses sous-classes pour réellement faire quelque chose d'utile avec elle.

Questions connexes