Question

Je suis en train de créer un projet simple à trois niveaux et je suis sur la bonne voie sur la mise en œuvre de la couche logique métier, en ce moment, voici comment mes BL ressemble

//The Entity/BO
public Customer
{
    public int CustomerID { get; set; }
    public string CustomerName { get; set; }
    public UserAccount UserAccount { get; set; }
    public List<Subscription> Subscriptions { get; set; }
 }

//The BO Manager
public class CustomerManager
{

     private CustomerDAL _dal = new CustomerDAL();

    private Customer _customer;

    public void Load(int customerID)
    {
        _customer = GetCustomerByID(customerID);
    }


    public Customer GetCustomer()
    {
        return _customer;
    }


    public Customer GetCustomerByID(int customerID)
    {

        return _dal.GetCustomerByID(customerID);
    }


    public Customer GetCustomer()
    {
        return _customer;
    }

    public UserAccount GetUsersAccount()
    {

        return _dal.GetUsersAccount(_customer.customerID);
    }

    public List<Subscription> GetSubscriptions()
    {
         // I load the subscriptions in the contained customer object, is this ok??
        _customer.Subscriptions = _customer.Subscriptions ?? _dal.GetCustomerSubscriptions(_customer.CustomerID);

        return _customer.Subscriptions;
    }

Comme vous pouvez le remarquer, mon gestionnaire d'objets est vraiment juste un conteneur de mon objet réel (client), et c'est là que je mets ma logique métier, un peu façon de découpler l'entité commerciale à la logique métier, voilà comment je généralement utiliser

        int customerID1 = 1;
        int customerID2 = 2;

        customerManager.Load(1);

        //get customer1 object
        var customer = customerManager.GetCustomer();

        //get customer1 subscriptions
        var customerSubscriptions = customerManager.GetSubscriptions();

        //or this way
        //customerManager.GetSubscriptions();
        //var customerSubscriptions = customer.Subscriptions;


        customerManager.Load(2);

        //get customer2
        var newCustomer = customerManager.GetCustomer();

        //get customer2 subscriptions
        var customerSubscriptions = customerManager.GetSubscriptions();

Comme vous pouvez le voir ne détient que 1 objet à la fois, et si je dois gérer Liste des clients, je probablement créer un autre gestionnaire comme CustomerListManager

Ma question est: Est-ce la bonne façon de mettre en œuvre la BL d'une conception à trois niveaux / couche? Ou toute suggestion sur la façon dont vous voulez la mettre en œuvre. Merci.

Était-ce utile?

La solution

Comme d'autres l'ont mentionné avant, vous devriez jeter un oeil à la Référentiel modèle. Je recommande également de consulter la Unité de travail modèle ainsi que Domaine Driven design pour l'architecture de votre application en général.

Vous pourriez aussi avoir un regard sur l'objet-relationnel ( ORM ) cadres pour .NET comme Entity Framework ou NHibernate si c'est une option pour vous.

Pour vous donner une ici tête départ sont d'excellentes ressources pour vous sur la route droite:

Livres

Références en ligne

L'espoir qui aide.

Autres conseils

Essayez le modèle référentiel, je pense que ça va répondre à vos besoins.

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