【发布时间】:2013-08-16 08:51:07
【问题描述】:
我最近浏览了很多 OOP 设计模式,并且遇到了一些我以前从未见过的奇怪的事情:
Button button = new Button(shell, SWT.PUSH);
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// Handle the selection event
System.out.println("Called!");
}
});
具体来说,这是做什么的(例如,“new”关键字在这里做什么)?:
button.addSelectionListener(new SelectionAdapter() {
第二个问题:
private void notifyListeners(Object object, String property, String oldValue, String newValue) {
for (PropertyChangeListener name : listener) {
name.propertyChange(new PropertyChangeEvent(this, "firstName", oldValue, newValue));
}
}
这是来自观察者设计模式的 sn-p。根据我的新理解,name.propertyChange(...) 创建了一个 PropertyChangeEvent 对象,并通过 Java 的观察者模式实现,通过将这个新对象的信息发送给观察者(或类似的东西)自动通知观察者。这是正确的吗?
【问题讨论】:
-
请注意,在这种特殊情况下(与单个“选定”方法的接口)通常使用“事件”编写的 C# 等效代码 - Handling and Raising Events 而不是与单个成员的接口。
-
它是一个抽象类,这意味着您可以创建一个新的匿名类来实现它。适合短期任务。
-
尽量不要在同一个帖子中问多个不相关的问题。而是提出一个新问题。
-
我已经回答了你的第二个问题。