首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模块化UI和事件管理的模式

模块化UI和事件管理的模式
EN

Stack Overflow用户
提问于 2013-02-17 02:58:00
回答 2查看 1.1K关注 0票数 1

在我的应用程序中,我为UI组件和它们的事件管理提供了不同的类。

虽然我最初的想法是对窗口和框架有单独的类,然后一个窗口将有框架的组合。

对于在窗口或框架/控件级别发生的事件的创建和委派,应该有一个单独的条目。

但是,我无法得出这种模式的结论。

因此,目前以独立的事件处理程序结束,它们直接链接到各自的UI框架/控件。

请指导我为这个用例选择一个好的模式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-17 22:01:33

EventAggregator模式应该是您的发展方向。它完全将你的模块彼此解耦。通过这种方式,模块不需要知道(或引用)另一个。

你可以看到我关于同一主题here的另一个(更详细的)答案。

如果你不需要那么多的松散耦合(例如模块之间有相互的引用),你应该看看Observer pattern。这是实现分布式事件处理机制的另一种方法。

票数 0
EN

Stack Overflow用户

发布于 2013-02-18 00:05:02

您正在寻找的是Command模式。命令模式基本上允许您将请求/消息封装到一个完整的对象中,以便请求消息的对象不必知道最终将处理请求的对象。例如,你有可以发出事件的菜单项、按钮等,基本上当你编写这些元素时,你不知道谁将处理这些事件(我假设你正在开发一个将处理事件的UI框架)。因此,您基本上将有关事件接收方的信息编码到一个名为Command的类中,它将具有对实际接收方的引用。它还将有一个execute方法,该方法基本上将调用特定于域的代码。您将拥有命令类的各种子类,这些子类将处理特定的请求,如CopyCommandPasteCommand等。

代码语言:javascript
复制
abstract class Command {
  private Receiver receiver;
  public void setReceiver(Rceceiver receiver){
     this.receiver = receiver;
  }

  public Rceiver getReceiver(){
     return this.receiver;
   }

  abstract execute();
}

基本上,现在您可以使用setCommand应用编程接口为单独的UI组件设置命令。UI组件将委托给底层命令。

代码语言:javascript
复制
class Button {

private Command command; 

public void setCommand(Command command){
 this.command = command;
} 

 public void onClick(){
    command.execute();
  }
}

有关更多详细信息,请参阅Gof Book中的命令模式。

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

https://stackoverflow.com/questions/14913924

复制
相关文章

相似问题

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