互联网上有很多关于分层软件设计的信息,但我找不到一个常见问题的答案:我应该聚合来自不同组件(或实体(的信息,而不是来自下层的同级组件或组件吗?
假设我有以下场景:
业务层:ConsumerBO
、OrdersBO
、MessagesBO
。。。数据层:ConsumerDAO
、OrdersDAO
、MessagesDAO
。。。
ConsumerBO
×ConsumerDAO
、OrdersBO
×OrdersDAO
等之间的关系是明确的。但是,如果我需要在ConsumersBO
上编写一个方法来聚合来自ConsumersDAO
、OrdersDAO
和MessagesDAO
的信息,我应该通过使ConsumersBO
从其同级(例如:OrderBO
和MessagesBO
(或从下层的组件(例如:OrdersDAO
、MessagesDAO
(访问方法来实现吗?为什么?
[edit]由于票数不足而重写此问题。。
如果可能的话,尽量让您的业务类依赖于它们的兄弟类。这旨在减少层之间的耦合,这总是一件好事。
请注意,业务层永远不应该直接依赖于数据层,因为前者比后者更抽象。通常,我们让业务类依赖于由数据层中的类实现的接口。例如,CustomerBO
将使用属于业务层的ICustomerDAO
接口,而不是属于数据层的具体CustomerDAO
类。