在Java中,Swing库实现了观察者/订阅者-Publisher设计模式,以设计程序对GUI上事件的响应方式(单击按钮等)。
程序员将ActionListener对象(观察者)注册到GUI元素(subject/ when /publisher),当GUI元素的状态发生变化时,这些对象会得到通知,并相应地做一些事情。这似乎是设计GUI系统的一种合理方法,我想不出任何其他框架能够做到这一点的方法。
在GUI中还有其他设计事件响应系统的方法吗?是否有任何带有GUI事件响应系统的命令式语言框架或库不是这样设计的?最常见的C#图形用户界面库中的事件响应系统是否使用观察者或其他工具实现事件响应问题?Python的库呢,等等。
发布于 2014-03-28 13:18:15
这是函数式反应规划。这样做的目的是把时变的实体变成一流的对象。假设我们正在处理一个鼠标光标,我们想要在光标右边画一个10像素的图标。假设有一种类型的TimeVarying<T>表示一个值,该值随时间而变化。TimeVarying总是神奇地包含该数量的当前值。因此,与其注册回调并执行一系列命令式操作来获取当前鼠标位置并更新图标的位置,不如想象鼠标位置是一个TimeVarying<Point>。然后,我们可以写一些类似..。
iconX = mousePosition.x + 10;iconX变量也是一个时变的量。每当mousePosition发生变化,iconX就会发生变化,就像电子表格中的单元格一样。当然,需要有一些东西来保持所有这些价值观的更新,并以一种安全有效的方式传播这些变化。
有关更多细节,请参见论文反对观察者模式。
我知道函数式反应性编程框架是存在的,但我不知道是否有任何成熟的Java框架。
发布于 2014-03-28 13:14:37
Swing还允许您继承面板并覆盖核心容器类中的Process*Event方法,您需要首先启用事件。
不过,如果您要创建一个新的复杂小部件,这才是个好主意。
https://softwareengineering.stackexchange.com/questions/234048
复制相似问题