Frage

Ich versuche, ein einfaches dreistufiges Projekt zu erstellen, und ich bin auf dem Laufenden, die Geschäftslogikschicht zu implementieren, so sieht mein BL so aus

//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;
    }

Wie Sie vielleicht bemerken, ist mein Objektmanager wirklich nur ein Container meines realen Objekts (Kunde), und hier habe ich meine Geschäftslogik eingelegt.

        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();

Wie Sie sehen können, enthält es nur 1 Objekt jeweils, und wenn ich die Liste der Kunden verwalten muss, muss ich wahrscheinlich einen anderen Manager erstellen wie CustomerListManager

Meine Frage ist, ist dies der richtige Weg, um das BL eines Drei -Stufe/-schicht -Designs zu implementieren? Oder irgendein Vorschlag, wie Sie es implementieren würden. Vielen Dank.

War es hilfreich?

Lösung

Wie andere bereits erwähnt haben, sollten Sie sich das ansehen Repository Muster. Ich würde auch empfehlen, das zu überprüfen Arbeitseinheit Muster sowie Domänengesteuerte Design Für die Architektur Ihrer Anwendung im Allgemeinen.

Möglicherweise sehen Sie sich auch das relationale Objekt (Relational-Mapping an (Orm) Frameworks für .net wie Entität Framework oder Nhibernate Wenn das eine Option für Sie ist.

Um Ihnen einen Kopfstart zu geben, finden Sie hier einige großartige Ressourcen, um Sie auf die richtige Straße zu bringen:

Bücher

Online -Referenzen

Ich hoffe, das hilft.

Andere Tipps

Versuchen Sie, nach dem Repository -Muster zu suchen. Ich denke, es wird Ihre Bedürfnisse beantworten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top