业务层设计 - 如何定义规则

时间:2011-10-29 04:32:08

标签: c# java oop model domain-driven-design

我了解最佳做法是将业务规则放在业务层,将数据访问放在单独的数据访问层中,而实体则是模型的一部分。

例如,我正在使用我的模型中定义的Customer实体,我可以通过数据访问层从数据库中获取所有客户。我也可以通过DAL添加新客户。

然而,在我添加客户之前,我需要对其进行验证 - 所以我想我需要在业务层中定义规则 - 但我不太清楚如何去做。

  

我的业务层是否只有接受实体的方法   参数?像BLL.Customers.Validate(Model.Customer   客户)?

     

或者

     

我的业务层是否扩展了我的实体?我应该成为实体吗?   像Customer部分类这样的类?这样BLL可以扩展它们   还有业务规则吗?

我不确定如何设计业务层。

1 个答案:

答案 0 :(得分:0)

您的实体应该真正拥有自己的所有业务行为,因此实体本身会有一个Validate方法。我还想在我的实体中使用静态工厂方法来创建实体:

public class Cusotmer
{
    private long? _id;
    private string _name;
    //other attributes...

    public static Customer Create(string name)
    {
        Customer customer = new Customer();
    }

    public void Validate()
    {
        if(_name == null)
            throw new ValidationException("Name has not been set.");
    }
}

我不确定为什么你需要部分类,除非你是从数据库生成实体的代码呢?

相关问题