有哪些最佳实践可以协调 View 中的复杂组件之间的交互?
我说的不是组合框或网格控件之类的简单小部件,而是由多个小部件组成的组件,它们可能值得单独进行单元测试。
你会:
- 为每个组件定义抽象接口,
让控制器通过依赖注入将它们连接起来,让它们通过方法调用直接相互通信?因此,组件知道其他组件的接口。 - 定义每个组件可以触发的事件
让控制器直接通过事件监听器将它们连接起来?因此,组件具有附加到其他组件的事件接收器的事件处理程序。 - 为每个组件定义抽象接口,定义它们可以触发的事件和
让控制器监听所有事件并在接口上执行方法调用?因此,这些组件与其他组件完全无关。 - 观察者模式的经典应用?
- 还要别的吗?
更新:我已经从 #1-3 中删除了“让控制器 ...”,因为在这些情况下,不一定是控制器必须执行路由/编排。它可能是视图本身。
我在最近的一个项目中采用了方法#3,我对组件的解耦和单独的可测试性感到满意。但是,我有一种感觉,我可以简化组件的布线。在我的例子中,主 View 对象必须在每个组件上添加多个事件侦听器,然后在有时进行一些本地处理(例如与模型交谈)之后调用适当组件上的方法。添加事件处理程序的代码看起来有点乱,我特别在寻找一种干净的方式来做到这一点。