在我的应用程序中,我有几个必须相互了解的组件,例如菜单栏和工具栏,它们都需要了解表格以添加或删除作业并找出选择了哪个作业。
因此,我创建了一个名为的对象guiMediator
,我将其传递给每个对象,并且他们使用它注册自己,以便他们可以使用该对象相互联系。它还负责在添加新工作或后台工作人员完成工作时触发事件。
既然对系统了解很多,那么这种用法是不是在一个地方责任太大了,还是这个模式的正确用法呢?
在我的应用程序中,我有几个必须相互了解的组件,例如菜单栏和工具栏,它们都需要了解表格以添加或删除作业并找出选择了哪个作业。
因此,我创建了一个名为的对象guiMediator
,我将其传递给每个对象,并且他们使用它注册自己,以便他们可以使用该对象相互联系。它还负责在添加新工作或后台工作人员完成工作时触发事件。
既然对系统了解很多,那么这种用法是不是在一个地方责任太大了,还是这个模式的正确用法呢?
通常我会使用命令模式来做类似的事情:
所以你的命令知道你所有的视图组件,但你的视图组件唯一需要知道的是当用户完成给定动作时要执行哪个命令。
我会使用被动视图,您可以在此处阅读。
请注意,除了 UI 界面之外,其他任何地方都不知道按钮、复选框等。您使用接口抽象出实际的实现。
这会给你带来几个优势。首先,它将记录您的代码如何与 UI 交互,为您提供一个实现模拟对象以用于自动化测试的地方,最后为更改 UI 提供更大的自由度。
例如替换可点击面板而不是命令按钮。然后表单将开始从面板而不是按钮传递点击事件。表单可能不知道每个小部件应该执行的实际命令。UI 对象负责处理这些。
听起来比另一种更好......但是,嘿,我嫁给了最不丑的妹妹;-)