如何在组件之间表达需求



我有两个组件,A和B。成分B要求A具有某种状态。

我可以将其作为B代码的一部分来编写,
或者我可以把它作为A代码的一部分来写(也许可以向B添加断言)

在做出这样的决定时,我应该考虑什么?

编辑

在这种情况下,可能有几个B型组件
也有人认为我无法避免这种情况

编辑2

这种情况在使用框架时经常发生。我通常有某种"全局设置",以及需要这些设置的组件是

可能性:

  • 让A实现一个接口,B将进行检查
  • 只要A有这样的状态,就让它创建B

一般来说,使用第一个解决方案,因为所有的B都指A,但A实际上不必知道所有的B(你说有很多)。理论上,每个对象都应该做它应该做的事情,忽略任何其他存在的事情,除非它是控制器对象。

对于第一个解决方案,B检查A拥有的内容。在第二种解决方案中,A成为所有B的控制器

我想说,最好让B在创建时检查A,但在特殊情况下,比如当A是你的主控制器类时,最好让A创建B。

作为对OP编辑2的响应进行编辑是的,在这种情况下,在全局设置中进行B检查几乎总是更好的。全局设置在那里,所以你可以检查它们!唯一的例外是,如果A也是所有其他组件(如XNA中的Game类)的所有者。。。即使在那里,也很难选择,为了保持架构的完整性,我仍然会让B检查A的内部,它只是更干净、更健康。

我不确定耦合是否过高(至少不是从您对问题的描述来看)。

我认为你的一般问题的一般答案来自于OO普遍存在的所有权/责任概念。如果B在做某事之前需要A处于某种状态,那么B在做之前必须确保A处于该状态。责任在于B-将代码放入B中。

假设A有自己独立于B的生命。让它成为A吧,伙计。

最新更新