首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中介者模式或责任过多

中介者模式或责任过多
EN

Stack Overflow用户
提问于 2009-05-19 12:31:08
回答 3查看 632关注 0票数 3

在我的应用程序中,我有几个必须相互了解的组件,例如菜单栏和工具栏,它们都需要了解表才能添加或删除作业,还需要知道选择了哪个作业。

因此,我创建了一个名为guiMediator的对象,我将其传递给每个对象,然后它们将自己注册到该对象中,这样它们就可以使用该对象相互访问。它还负责在添加新作业或后台工作人员完成工作时触发事件。

由于它对系统了解很多,这种类型的使用是否在一个地方承担了太多的责任,或者这是模式的正确用法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-19 12:40:46

通常情况下,我会使用命令模式来做这样的事情:

  1. 用户单击菜单栏上的"Foo“按钮,这将执行FooButtonClickedCommand.
  2. FooButtonClickedCommand执行它应该执行的操作,然后修改视图(菜单栏、表格等) appropriately.

因此,您的命令知道所有视图组件,但您的视图组件唯一需要知道的是,当用户完成给定操作时执行哪个命令。

票数 3
EN

Stack Overflow用户

发布于 2009-05-19 12:49:59

我会使用被动视图,你可以读到关于here的内容。

  • 你可以把每个表单放在界面后面
  • 每个表单都会注册一个或多个UI对象
  • UI对象应该自然地组织起来,就像设置、输入、显示等。虽然机器控制器可能在每个屏幕上都有多个对象。但接口被实现为将事件传递给UI对象并向UI对象公开演示控件、绘制图面的薄外壳。然后,
  • UIObject获取输入并确定要执行哪个命令对象
  • 命令对象将更新模型,然后通知一个或多个UI对象更新视图。
  • UIObjects更新视图。

F216

请注意,除了UI界面之外,任何地方都不知道按钮、复选框等。您可以使用该接口来抽象实际的实现。

这会给你带来几个好处。首先,它将记录您的代码如何与UI交互,为您提供一个实现用于自动化测试的模拟对象的位置,最后,您可以更灵活地更改UI。

例如,用可点击的面板代替命令按钮。然后,表单将开始从面板而不是按钮传递单击事件。表单可以忽略每个小部件应该执行的实际命令。UI对象负责这一点。

票数 1
EN

Stack Overflow用户

发布于 2009-05-19 12:33:55

听起来比另一种选择更好...但是,嘿,我娶了最不丑的姐姐;-)

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/882459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档