2

シンプルな 3 層プロジェクトを作成しようとしています。現在、ビジネス ロジック レイヤーの実装を順調に進めています。これが私の BL の外観です。

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

お気づきかもしれませんが、私のオブジェクト マネージャーは、実際には私の実際のオブジェクト (Customer) のコンテナーにすぎません。ここに、ビジネス エンティティをビジネス ロジックから分離する方法として、ビジネス ロジックを配置します。

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

ご覧のとおり、一度に 1 つのオブジェクトしか保持できません。また、顧客のリストを管理する必要がある場合は、次のような別のマネージャーを作成する必要があります。CustomerListManager

私の質問は、これは 3 層/レイヤー設計の BL を実装する正しい方法ですか? または、それをどのように実装するかについての提案。ありがとう。

4

2 に答える 2

0

リポジトリ パターンを検索してみてください。ニーズに答えてくれると思います。

于 2011-06-12T13:01:51.857 に答える
0

他の人が前に述べたように、リポジトリパターンを確認する必要があります。また、アプリケーションのアーキテクチャ全般について、 Unit Of Workパターンとドメイン駆動設計を確認することをお勧めします。

また、オプションである場合は、Entity FrameworkNHibernateなどの .NET 用のオブジェクト リレーショナル マッピング ( ORM ) フレームワークを調べることもできます。

有利なスタートを切るために、正しい道を歩むための優れたリソースをいくつか紹介します。

書籍

オンライン リファレンス

それが役立つことを願っています。

于 2011-07-05T17:37:13.373 に答える