gpt4 book ai didi

model-view-controller - View 内的跨组件通信 (MVC)

转载 作者:行者123 更新时间:2023-12-03 07:08:54 25 4
gpt4 key购买 nike

编排 View 中复杂组件之间的交互有哪些最佳实践?

我不是在谈论简单的小部件,例如组合框或网格控件,而是由多个小部件组成的组件,并且可能值得对其进行单元测试。

你愿意吗:

  1. 为每个组件定义抽象接口(interface),让 Controller 通过依赖注入(inject)将它们连接起来,让它们通过方法调用直接相互通信? 因此,这些组件知道其他组件的接口(interface)。
  2. 定义每个组件可以触发的事件并让 Controller 直接通过事件监听器将它们连接起来? 因此,这些组件将事件处理程序附加到其他组件的事件接收器。
  3. 为每个组件定义抽象接口(interface),定义它们可以触发的事件并让 Controller 监听所有事件并在接口(interface)上执行方法调用? 因此,这些组件与其他组件完全不可知。
  4. 观察者模式的经典应用?
  5. 还有什么吗?

更新:我从 #1-3 中删除了“让 Controller ...”,因为在这些情况下 Controller 不一定必须执行路由/编排。它可能是 View 本身。

我在最近的一个项目中采用了方法 #3,我对组件的解耦和单独可测试性感到满意。然而,我有一种感觉,我可以简化组件的接线。就我而言,主视图对象必须在每个组件上添加多个事件监听器,然后在有时进行一些本地处理(例如与模型通信)之后调用适当组件上的方法。添加事件处理程序的代码看起来有点困惑,我特别寻找一种干净的方法来做到这一点。

最佳答案

选项 #3 听起来像中介者模式,并且当对象之间的更新逻辑和通信很复杂时通常是最佳方法。它还具有保持控制逻辑和初始化集中化的额外优势,这往往使跟踪和调试这些类型的情况变得更容易。

关于model-view-controller - View 内的跨组件通信 (MVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/190157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com