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
Dans la plupart des cas, cela est une bonne idée que cette façon offre deux avantages majeurs:
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.
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.
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.
- 1. Factory Class - Enregistrer des objets
- 2. EJB Factory Class
- 3. Bibliothèque Wrapper - Builder vs Factory avec POCO
- 4. Comment créer des associations RoR Factory avec accept_nested_attributes_for?
- 5. Wrapper Factory en Java
- 6. Quel est le problème avec mes données json ici?
- 7. Séparer les méthodes objet des données objet
- 8. C# Class Design avec des génériques
- 9. Modèle de base de données Factory avec plusieurs bases de données
- 10. Pourquoi mon sélecteur jquery ne fonctionne-t-il pas ici?
- 11. NHibernate: Persist un objet avec des enfants
- 12. Comment savoir quelle classe est référencée par un objet Class?
- 13. Quel motif de conception est suggéré ici?
- 14. Class Dictionary dans java (structure de données)
- 15. AS3 Dynamic Class Noms des méthodes dynamiques
- 16. ActionScript Object (Class?) Syntaxe
- 17. Comment sauvegarder mon objet dans ma base de données dans LINQ to SQL?
- 18. KnowledgeSyncProvider class
- 19. Nullable struct vs class
- 20. Crystal Reports Css Class
- 21. Pourquoi utiliser jsp: useBean ici mais pas simplement créer un nouvel objet? Dans
- 22. Convertir des fichiers .class en fichiers binaires?
- 23. Entity Framework - Comment utiliser mon objet "Entities"
- 24. Comment inclure des fichiers .class dans mon projet dans Eclipse? (Java)
- 25. Dans NHibernate, puis-je utiliser factory pour construire un objet agrégat complexe (Entity)?
- 26. Pourquoi ne puis-je pas obtenir mon objet CDatabase pour comprendre mon nom de source de données?
- 27. Comment détacher un objet géré des données de base?
- 28. Qu'est-ce qui ne va pas avec window.open ici?
- 29. Comment renseigner les descriptions de champs dans MS Access
- 30. Membres de données privées 'access to enclosing class' imbriqués
Merci beaucoup pour votre commentaire, c'est ce que je vais essayer. – schmoopy