在我的应用程序中,我为UI组件和它们的事件管理提供了不同的类。
虽然我最初的想法是对窗口和框架有单独的类,然后一个窗口将有框架的组合。
对于在窗口或框架/控件级别发生的事件的创建和委派,应该有一个单独的条目。
但是,我无法得出这种模式的结论。
因此,目前以独立的事件处理程序结束,它们直接链接到各自的UI框架/控件。
请指导我为这个用例选择一个好的模式。
发布于 2013-02-17 22:01:33
EventAggregator模式应该是您的发展方向。它完全将你的模块彼此解耦。通过这种方式,模块不需要知道(或引用)另一个。
你可以看到我关于同一主题here的另一个(更详细的)答案。
如果你不需要那么多的松散耦合(例如模块之间有相互的引用),你应该看看Observer pattern。这是实现分布式事件处理机制的另一种方法。
发布于 2013-02-18 00:05:02
您正在寻找的是Command模式。命令模式基本上允许您将请求/消息封装到一个完整的对象中,以便请求消息的对象不必知道最终将处理请求的对象。例如,你有可以发出事件的菜单项、按钮等,基本上当你编写这些元素时,你不知道谁将处理这些事件(我假设你正在开发一个将处理事件的UI框架)。因此,您基本上将有关事件接收方的信息编码到一个名为Command的类中,它将具有对实际接收方的引用。它还将有一个execute方法,该方法基本上将调用特定于域的代码。您将拥有命令类的各种子类,这些子类将处理特定的请求,如CopyCommand、PasteCommand等。
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组件将委托给底层命令。
class Button {
private Command command;
public void setCommand(Command command){
this.command = command;
}
public void onClick(){
command.execute();
}
}有关更多详细信息,请参阅Gof Book中的命令模式。
https://stackoverflow.com/questions/14913924
复制相似问题