0

在我的一个项目中,我使用的是 n 层架构

DAL (Repository Pattern) <-> BLL (POCO Services) <-> Web UI (ASP.NET MVC)

我创建了一个通用存储库,DAL 层一切正常。

在业务逻辑层中,我有我的服务方法,其运行方式类似(我喜欢使用的示例是因为 Pizza :)

myOven.Bake(myPizza);

尽管如此,我需要一些对象内部的特定信息myPizza,例如:

myPizza.GetBakeTime();

我知道,我可以使用类似的东西:

myOven.GetBakeTimeFor(myPizza);

可以计算它,但我不想把那个特定的逻辑放入myOven对象(这里的服务层),相反,我想把它包含在 中myPizza,比如

public partial class Pizza
{
    public double GetBakeTime()
    {
        // calculate Bake Time and return, based on other variables
    }
}

我的意思是,扩展我的 ORM 生成的类并提供此功能。

Domain Logic我的问题:我知道,这在理论上是可以做到的,但是在同时使用这两个课程和Business Logic同一个课程时我应该考虑什么?

4

1 回答 1

2

领域层应该只处理与业务相关的功能。存储库处理数据的持久性。这两者有不同的目的,不应该混在一起。

此外,领域层几乎就是业务层。对于这个特定示例,您只需要烘焙时间,那么专门的查询存储库应该知道答案而不涉及域(因为它是预先计算的)。如果您想知道烘烤还剩多少时间,那么服务(域的一部分)可以使用烤箱和披萨实体获取值。

但是,这已经太具体了,可能根本不适合您要解决的实际问题。

于 2012-06-15T10:20:18.837 回答