2008-10-10 3 views
0

im créer une classe Factory qui construira et retournera un objet. Normalement, je ferais toutes les données au Data Access Layer, mais je ne pense pas pouvoir atteindre mon objectif et le faire encore. Ce que je veux faire est d'utiliser un SQLDataReader pour lire rapidement les informations de données et remplir l'objet à retourner de l'usine. Est-ce une idée stupide? Est-ce qu'il y a une meilleure approche? Je préférerais ne pas renvoyer un DataSet de la DAL si possible, ou est-ce une question de performance ou de maintenabilité?Factory Class - Dois-je renseigner mon objet avec des données ici?

Répondre

1

Dans la plupart des cas, cela est une bonne idée que cette façon offre deux avantages majeurs:

  1. De cette façon, vous pouvez séparer l'accès aux données et la logique métier, ce qui signifie que si vous changez la base de données la conception des algorithmes de couche supérieure n'a pas besoin d'être changé. Du point de vue OO, vous convertissez des données pures en objets et pouvez également ajouter un comportement aux objets, ce qui rend le code plus facile à maintenir et à réutiliser.

0

Si vous êtes sûr que vous allez utiliser toutes les données que vous chargez à partir de SQLDataReader, alors oui, vous pouvez le faire au moment de la construction en usine. Cependant, si l'ensemble de données comporte de nombreux champs, dont seule une minorité sera utilisée, le chargement des données au moment de l'appel des accesseurs constituerait une meilleure utilisation des ressources. Cela dit, je vous suggère de le charger en usine quand vous avez toutes les pièces à portée de main, et si ce n'est pas tout à fait exact, vous saurez ce qu'il faut réparer. Commencez toujours par la chose la plus simple qui pourrait fonctionner.

+0

Merci beaucoup pour votre commentaire, c'est ce que je vais essayer. – schmoopy

0

Je dirais que cela dépend de votre utilisation prévue de l'usine. S'il s'agit d'une fabrique sur votre couche d'accès aux données, qui sera utilisée pour remplir des objets métier avec des données de la base de données, alors oui c'est l'endroit pour le faire. (Le modèle IRepository est quelque chose comme ça ... en quelque sorte).

Si votre usine n'est pas destinée à vivre à proximité de votre code d'accès aux données, je les garderais séparés. Rappelez-vous le Single Responsibility Principle: Les objets doivent avoir une seule raison de changer. Si la fabrique ne fait que peupler des objets avec des données, alors c'est une utilisation appropriée, mais si elle remplit des objets avec des données en plus de faire d'autres choses, il est préférable de ne pas ajouter les données.

Il y a des compromis sur ce que vous faites, donc j'aime généralement garder les objets aussi simples que possible le plus longtemps possible.

Questions connexes