Design patterns 在分层软件中,从不同组件聚合信息的正确方法是什么?

Design patterns 在分层软件中,从不同组件聚合信息的正确方法是什么?,design-patterns,software-design,Design Patterns,Software Design,互联网上有很多关于分层软件设计的信息,但我找不到一个常见问题的答案:我应该从不同的组件或访问兄弟组件的实体或下面层的组件中聚合信息吗 假设我有以下场景: 业务层:ConsumerBO、OrdersBO、MessagesBO。。。 数据层:ConsumerDAO、OrdersDAO、MessagesDAO ConsumerBO x ConsumerDAO、OrdersBO x OrdersDAO等之间的关系很清楚。但是,如果我需要在ConsumersBO上编写一个方法来聚合来自ConsumersD

互联网上有很多关于分层软件设计的信息,但我找不到一个常见问题的答案:我应该从不同的组件或访问兄弟组件的实体或下面层的组件中聚合信息吗

假设我有以下场景:

业务层:ConsumerBO、OrdersBO、MessagesBO。。。 数据层:ConsumerDAO、OrdersDAO、MessagesDAO

ConsumerBO x ConsumerDAO、OrdersBO x OrdersDAO等之间的关系很清楚。但是,如果我需要在ConsumersBO上编写一个方法来聚合来自ConsumersDAO、OrdersDAO和MessagesDAO的信息,那么我应该从ConsumersBO的兄弟节点(如OrderBO和MessagesBO)或下面层的组件(如OrdersDAO、MessagesDAO)创建ConsumersBO访问方法吗?为什么?


[编辑]由于投票被否决而重写此问题。

如果可能,请尝试使您的商业课程依赖于他们的兄弟姐妹。这旨在减少层之间的耦合,这总是一件好事


请注意,业务层永远不应该直接依赖于数据层,因为前者比后者更抽象。通常我们让业务类依赖于接口,接口由数据层中的类实现。例如,CustomerBO将使用属于业务层的ICCustomerDao接口,而不是属于数据层的具体CustomerDAO类。

作为旁注,我通常使用同级组件方法,出于一些原因,例如避免复制已经在同级组件上实现的逻辑,如果我们直接在下面的层上执行,这些逻辑将丢失。但是在n层模式的文章中,我没有发现任何正式的迹象表明这是正确的方法。