シンプルな 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 を実装する正しい方法ですか? または、それをどのように実装するかについての提案。ありがとう。