边界类可以与实体类交互吗?

时间:2010-11-08 10:53:49

标签: uml modeling

例如:link

以上是否可以更好地在Controller中创建更多方法来处理发送/检索的数据,而无需UI和实体之间的交互?

一般情况下,何时允许(如果有)边界类与实体类进行交互?

1 个答案:

答案 0 :(得分:0)

取决于您是否希望/需要虔诚地坚持边界控制实体模式:

  • 如果是(您确实需要坚持模式):那么不,Boundary对象只能与Control对象说话。参见this page底部的表格(也是对模式的一个很好的描述)。
  • 如果不是:那么它可以!

这并不意味着愚蠢。这种严格的分离是否是良好的设计实践是值得怀疑的。它在图片中看起来不错:边界,控制和实体在漂亮的水平层中,消息只传递相邻的层。

现实情况有所不同。严格分离可能会导致两个问题:

  1. 传递方法的激增。你暗指这一点。您最终会在控制器上合并一些方法,这些方法只会传递给底层实体。
  2. 贫血实体课程。而不是实体是数据+行为的家,它们只是在迁移到控制器的所有行为的情况下成为数据容器。那是not a good thing
  3. 值得注意的是,在Domain Driven Design中,Eric Evans建议仅在所讨论的逻辑在任何域类(实体)中没有可行的主页时才创建服务(类似于控制器)。