2008-11-12 8 views
3

J'ai vu deux implémentations différentes de memento sur .NET.Implémentation de Memento sur .NET

Un est assez simple - L'objet crée une autre instance de lui-même.

L'autre est sérialisation l'objet en utilisant BinaryFormatter et MemoryStream.

Quelle est la méthode préférée? Quelqu'un peut-il souligner les avantages/inconvénients de chaque approche? En passant, je m'intéresse au point de vue de l'utilisation des ressources et de la productivité des développeurs. Je m'excuse de ne pas l'avoir dit en premier.

En supposant que le mémento n'a pas besoin d'être persisté, ce qui est préféré? Du point de vue de la productivité des développeurs, la sérialisation gagne la main. Quelques lignes génériques pour un objet sont plus efficaces que de créer manuellement un clone impliquant des constructeurs privés, des affectations de champs, etc.

Mais là encore, peut-être que la sérialisation est lourde - je ne suis pas certain.

Répondre

0

si vous allez persister mémento, utilisez la méthode de sérialisation

autrement, un objet cloné est bien

2

Je pense que le choix de la façon de créer/magasin mémento dépend de combien de temps vous voulez que le souvenir persiste et que vous ayez besoin de communiquer ce souvenir à travers les domaines. Si le souvenir n'existe que peu de temps et n'est utilisé que par le même fil, alors un objet cloné est raisonnable. Si le souvenir doit être conservé ou transmis à un autre domaine, la sérialisation est préférable. Si le souvenir a une longue durée de vie, vous pouvez même le sérialiser et le stocker en externe (dans un fichier ou une base de données).

0

Appelez-moi fou et inefficace, mais je fais le mien à un StringBuilder et d'une chaîne.

0

Souvent BinaryFormatter et MemoryStream fonctionnera sans avoir à écrire beaucoup de code, mais Clone() a besoin ajouté le code à chaque classe.

Sinon, je ne vois pas de correspondance pour choisir entre les deux méthodes si le mémento n'a pas besoin d'être conservé

Questions connexes