2008-10-10 18 views
5

J'ai une classe de fabrique qui remplit des objets avec des données. Je veux mettre en application la sauvegarde de l'objet, mais ne veux pas peupler l'objet avec des trucs de DB - est-il stupide d'avoir mon usine qui crée la classe enregistre également les données?Factory Class - Enregistrer des objets

ie: dans ma méthode .Save() sur l'objet que j'appellerais Factory.Save (myObject);

Répondre

3

Si vous êtes préoccupé par les données de base de données dans les classes - avez-vous envisagé d'utiliser le mappeur O/R? Cela éviterait que les éléments de la base de données ne contiennent plus de code et que les objets de votre domaine restent propres. Peut-être jeter un oeil à NHibernate ou Active Record.

2

Non, ce n'est pas du tout stupide, en fait, c'est ainsi que tout le monde devrait le faire. L'objet métier ne doit pas contenir de logique de persistance. Par exemple, si vous utilisez C# 3.0, vous risquez de ne plus vous soucier de la classe Factory. Créez simplement des méthodes d'extension. De cette façon, vous pouvez toujours avoir votre code de persistance isolé de l'objet métier et être toujours capable d'appeler myObject.Save().

+0

Vous avez voté pour la première ligne seulement ... J'essaie de convaincre les gens de ça depuis longtemps maintenant. – ckramer

+0

Juste ne l'appelez pas une usine par la suite - vous allez commencer à confondre les gens qui savent ce qu'est une usine. – jop

6

La classe de fabrique est un modèle de création qui facilite la création de nouveaux objets.

Il existe différents modèles qui traitent des objets persistants, dont l'un des données mappeur http://martinfowler.com/eaaCatalog/dataMapper.html

Ceci est souvent utilisé dans conjection avec dépôt http://martinfowler.com/eaaCatalog/repository.html

Vous pouvez utiliser ces modèles pour abstraire la base de données loin à partir de votre domaine/de vos objets métier et accédez-y depuis votre application pour interroger et enregistrer des objets. Par conséquent, le mappeur/référentiel de données est responsable des deux aspects de la persistance (remplissage de la base de données et sauvegarde dans la base de données).