【发布时间】:2009-04-18 13:17:38
【问题描述】:
我意识到已经有很多关于 n 层设计的帖子,这可能是我在思考问题并绕圈子,但我现在自己都感到困惑,想从社区中得到一些澄清请。
我正在尝试将我创建的项目(并且一开始在架构上的设计不是很好)分成不同的层(每个层都在自己的项目中):
- 用户界面
- 业务对象
- 逻辑/业务
- DAL
UI 应该只调用逻辑层来获取它的东西
业务对象不应调用或引用其他任何东西,只是作为存储数据的一种方式
Logic / BUSINESS 层应包含系统中获取、创建、更新、删除 (CRUD) 对象的所有方法,并且对BO 和 DAL。它将业务逻辑应用于操作,然后将实际的 CRUD 委托给 DAL。
DAL 只会对数据库执行 CRUD 操作。它会引用 BO,因为它会为 Get 等返回它们。
我的问题是逻辑类是否应该只调用其等效的 DAL 类而只调用逻辑类?换句话说,CompanyLogic 类应该只调用CompanyDAL 类。因此,如果它想通过 ID 获取客户端对象,它将调用 ClientLogic.GetClientByID(int) 而不是 ClientDAL.GetClientByID(int)。
我认为它可能应该留在自己的层上的原因是:
这似乎会放松项目之间的耦合
如果获取客户端对象在其中包含一些逻辑验证,那么逻辑呢(可能不是最好的示例,但希望它能够理解重点)。
编辑:
我不确定这是否是我的糟糕设计,但目前业务层有许多类,包括 ClientBULL 和 CompnayBULL,这两个类相互调用。我为每个类使用一个接口,并有一个工厂来构建对象以尝试减少任何耦合,但由于在两个类中调用方法,它们现在不能没有彼此而存在。这是一个坏主意吗?
【问题讨论】: