2009-12-17 5 views
0

J'ai la disposition suivante:Dois-je créer un wrapper autour de cette entité?

Entités:

Order 
OrderItem 

classes DAO:

OrderDAO 
OrderItemDAO 

J'ai donc des classes POCO et classes DAO.

Maintenant, je veux résumer les entités ci-dessus dans une autre entité, donc je peux avoir des méthodes comme:

x.AddItem(OrderItem item) 
x.CalculateTotal(); 
x.CalculateShipping(); 
x.Charge(); 

Qu'est-ce que ce type d'entité appelée? Usine? Ou juste un simple cours d'emballage?

Répondre

2

En général, je divise ma base de code en plusieurs couches: couche de modélisation, couche d'accès aux données, directeur/couche logique métier et l'interface utilisateur

Dans ce cas, je vous suggère de laisser la commande/OrderItem Poços et la création une classe OrderManager. Ce serait un singleton sans état, et des méthodes comme AddItem (Order, OrderItem). En interne, il traiterait des spécificités de la mise à jour des modèles, de la modification des données, de toute transactionalité, etc.

+0

J'aime la solution. Assez élégant. Cependant, on peut se demander s'il crée un couplage (trop) fort entre la classe "manager" et la couche DAO. – Romain

+0

La couche DAO gère load/queries/commits et pourrait être remise au gestionnaire lors de la construction par interface (en Java, j'utilise Guice pour ce type d'injection). J'ai trouvé que si vous êtes allés au moins aussi loin (injection de dépendance) vous n'avez pas besoin de vous soucier d'abstraire les interfaces tant que vous n'en avez pas vraiment besoin, parce que les lignes d'abstraction sont bien comprises. – Aaron

1

Ce ne sera certainement pas une usine (cela pourrait être l'objet que crée votre entité «conjointe», cependant). Peut-être un emballage, oui. Mais pourquoi ne pas avoir l'entité Order gérer ses OrderItem directement en créant une relation entre les deux?

0

Cela ressemble plus à un motif de façade. Cacher la mise en œuvre réelle de l'acte de faire ces différents processus. Ou en termes simples un emballage serait correct.

Voir ici: http://en.wikipedia.org/wiki/Facade_pattern

Questions connexes