Question

Je crée une classe Factory qui va construire et retourner un objet. Je ferais normalement tout le contenu des données à la couche d'accès aux données, mais je ne pense pas que je pourrais atteindre mon objectif et le faire quand même. Ce que je veux faire est d'utiliser un SQLDataReader pour lire rapidement les informations de données et renseigner l'objet à renvoyer de la fabrique. Est-ce une idée stupide? Est-ce qu'il y a une meilleure approche? Je préférerais, si possible, ne pas simplement renvoyer un DataSet du DAL, ou est-ce une question de performances par rapport à la maintenabilité?

Était-ce utile?

La solution

Dans la plupart des cas, c’est une bonne idée, car elle offre deux avantages majeurs:

  1. Ainsi, vous pouvez séparer l'accès aux données et la logique métier, ce qui signifie que si vous modifiez la conception de la base de données, les algorithmes de couche supérieure n'ont pas besoin d'être modifiés.

  2. Du point de vue de OO, vous convertissez des données pures en objets et pouvez également ajouter un comportement aux objets, ce qui facilite la maintenance du code et sa réutilisation.

Autres conseils

Si vous êtes sûr d'utiliser toutes les données que vous chargez depuis SQLDataReader, vous pouvez le faire au moment de la construction, en usine. Toutefois, si le jeu de données comporte de nombreux champs, dont seule une minorité sera utilisée, le chargement à la demande 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 dans l’usine lorsque vous avez toutes les pièces à portée de main, et si ce n’est pas tout à fait correct, vous saurez ce qu’il faut réparer. Commencez toujours par la chose la plus simple qui puisse fonctionner.

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

Si votre usine n’est pas destinée à vivre près de votre code d’accès aux données, je les garderai séparément. Rappelez-vous le Principe de responsabilité unique : les objets doivent avoir uniquement une raison de changer. Si la fabrique ne fait que remplir des objets avec des données, son utilisation est appropriée. Toutefois, si elle remplit des objets avec des données en plus de faire autre chose, il est préférable de ne pas ajouter de données.

Il y a des compromis à faire, peu importe la façon dont vous allez, donc j'aime généralement garder les objets aussi simples que possible aussi longtemps que possible.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top