Question

Je joue avec la construction d'un BLL pour mon application. D'après ce que j'ai vu / lu, il semble que le BLL devrait être apatride. Cela ne signifie-t-il pas que toutes les méthodes BLL pourraient être statiques? Ou j'aurais au moins besoin d'une seule instance de chaque classe BLL? Ce qui me semble étrange pour une raison quelconque, alors j'ai pensé que je ferais mieux de vérifier que je n'obtenais pas le mauvais bout du bâton avant de plonger trop loin dans mon expérimentation.

Je pense également que cela signifie que les objets BLL ne devraient jamais contenir de données, car les données représentent l'état - donc pour chaque opération BLL invoquée, toutes les données nécessaires doivent être demandées (ou récupérées à partir du cache) puis jetées. Est-ce que ça te paraît correct?

Merci.

Était-ce utile?

La solution

En théorie, oui, un BLL sans état peut signifier que toutes les méthodes peuvent être statiques.

Cependant, certaines considérations peuvent vous balancer vers l'utilisation d'instances d'objets BLL au lieu de statique.

  1. Les méthodes statiques introduisent un couplage serré entre les classes et vous empêchent d'utiliser des interfaces EG pour des dépendances en couple librement. L'utilisation des interfaces améliore la testabilité du BLL car elle peut désormais être moquée lors de la rédaction de tests unitaires pour la couche de service. Si vos méthodes BLL sont statiques, alors vous ne pourrez généralement pas le faire sans «solution de contournement» (par exemple, vous auriez besoin TypeMock ou Microsoft Fakes dans un environnement .NET).

  2. Sur une méthode BLL complexe (par exemple, une grande logique de transaction), vous pouvez refacter chacune de vos règles métier en plusieurs méthodes discrètes, et sur la sortie, éventuellement accumuler toutes les violations de validation et de règles en un seul résultat agrégé contenant tous les violations. Dans ce cas, il peut être lourde de shunting de l'entité / entités à valider et à accumuler les violations des règles, et à choisir un stockage avec état sur une instance de classe. Une classe de base ou générique pour votre instance BLL peut vous aider ici.

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