2009-06-18 5 views
3

Si j'ai un objet, par exemple, une classe d'utilisateurs, avec d'abord dire & propriétés Nom de famille ce qui est une meilleure façon de le remplir:Qui est un meilleur design de classe: Page appels appels de classe et de la page BLL ou appels de classe BLL?

  1. La PAGE instancie la classe et la page appelle la couche d'affaires à popualte la classe. (Dans ce cas, la classe est essentiellement un conteneur pour les données).

ou

  1. La classe elle-même n'a pas seulement les propriétés, mais il a aussi une méthode pour appeler la couche d'affaires, se remplir et se retourner peuplé à la page .
+1

Option 3: La page appelle la couche de gestion qui renvoie une instance pré-remplie de la classe. – jason

Répondre

5

J'irais pour le premier. Je pense que c'est plus propre et que votre classe d'utilisateurs peut se suffire à elle-même, même si la couche de gestion change.

Notez également que la première semble plus propice à l'utilisation d'une architecture MVC à trois niveaux.

2

Je préfère le premier. Avec ce dernier vous finissez par forcer les dépendances dans les endroits les plus étranges.

0

Je voudrais avoir une superclasse abstraite pour tous les objets métier implémenter une méthode reloadData(). Il peut être testé séparément de l'environnement Web et l'environnement Web ne dépend pas de la couche de données.

0

À mon avis, vous devez avoir une séparation des préoccupations. Le test est également beaucoup plus facile lorsque vous avez moins de dépendances. J'utiliserais la première méthode.

3

Cela dépend vraiment de ce que vous allez utiliser pour cette classe. Est-ce que ce sera seulement un conteneur que vous remplirez et utiliserez pour l'affichage? Allez-vous modifier ces données et les utiliser pour mettre à jour votre base de données?

Fondamentalement, ce que vous regardez est l'ensemble des fonctionnalités DAO/DTO. Dans le cas n ° 1, vous parlez d'un objet de transfert de données (DTO) c'est juste un conteneur pour les données. Dans le cas n ° 2, vous parlez d'un objet d'accès aux données (DAO), c'est un objet qui comprend comment conserver vos données et où les obtenir.

Ce qui vous manque est un cas # 3 qui est un objet métier qui comprend la logique métier associée à vos données. c'est-à-dire, quelles sont les autorisations de mon utilisateur, quelle est la position de mes utilisateurs au sein de l'entreprise (en supposant qu'un utilisateur professionnel).

Malheureusement, il n'y a pas de bonne réponse, tout dépend de ce que vous essayez de construire.

1

Je vous suggère de lire environ la méthode usine et usine abstraites motifs, en vue de déléguer la création de la classe à autre chose que la classe ou la page. Voici pourquoi:

La page est centrée sur les éléments de la page - elle ne s'intéresse qu'à quelque chose qui contient un nom et un prénom, pas le type de classe. Par conséquent, il ne devrait pas créer la classe, il suffit de demander une implémentation. La page ne s'intéresse vraiment qu'à une interface, avec peut-être des propriétés de prénom et de nom, et peut-être une méthode save().

Si la classe connaît les spécificités de la couche de gestion, vous avez des dépendances dont vous n'avez pas besoin.Pour modifier la couche de gestion, vous devez modifier les classes internes ou modifier la page afin de créer une classe différente. Si vous l'avez fait pour de nombreuses classes, la modification de la couche de gestion nécessiterait de nombreux changements dans les couches de classe et/ou de page.

0

Qu'en est-il si l'objet a une méthode .Save() qui appelle la méthode Business.Save()?

Peut-être que c'est trop mélanger cependant.

Questions connexes