在被监听的对象里添加一个List,其中保存着所有的ActionListener,ActionListener保留着当事件触发时的反应 ,当一个事件触发的时候就循环遍历所有的ActionListener调用触发方法,ActionEvent保留着一些时间发生的属性
package com.cht.observer.awt;
import java.util.ArrayList;
import java.util.List;
public class MyAwtTest {
public static void main(String[] args) {
MyButton mb = new MyButton();
MyActionListener ma = new MyActionListener ();
mb.addActionListener(new MyActionListener2());
mb.addActionListener(ma);
mb.click();
}
}
class MyButton {
//保留这个多个ActionListener的集合
private List<ActionListener> query = new ArrayList<ActionListener>();
public void click(){
//在单击事件初始化的时候,初始化ActionEvent对象
ActionEvent e = new ActionEvent(System.currentTimeMillis(),this);
for(ActionListener a:query){
a.actionPerformed(e);
}
}
public void addActionListener(ActionListener a ){
query.add(a);
}
}
interface ActionListener {
public void actionPerformed(ActionEvent e);
}
// ActionEvent 用于去记录一些事件发生的一些属性,例如时间,源对象等内容
class ActionEvent {
private long when;
private Object source;
ActionEvent(long w, Object source) {
this.when = w;
this.source = source;
}
public Object getSource() {
return source;
}
public long getWhen() {
return when;
}
}
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(e.getWhen()+ " in this side before or other");
}
}
class MyActionListener2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(e.getSource()+" Server ");
}
}
分享到:
相关推荐
Observer模式是一种行为模式,旨在解决定义对象间的一种一对多的依赖关系的问题。该模式可以定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 State...
观察者模式(Observer Pattern)定义了对象之间的一对多依赖关系,当一个对象改变状态时,所有依赖于它的对象都会收到通知并自动更新。在C#中,可以定义一个主题(Subject)接口和观察者(Observer)接口。当主题...
接着,“观察者模式”(Observer Pattern)属于行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在GUI应用中,观察者模式常用于事件处理。 ...
当一个对象的状态改变时,它可以创建一个备忘录来记录当前的状态,然后在需要的时候恢复回去。 **Swift实现:** ```swift class Memento { var state: String init(state: String) { self.state = state } } ...
这得益于它的`Observer`对象,它负责监听数据变化,并通过`Dep`(依赖)和`Watcher`(观察者)来实现数据的自动更新。在源码中,你可以找到这些核心类的实现,理解它们如何协同工作,从而更好地运用到实际项目中。 ...
备忘录模式用来捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。在C中,可以通过定义备忘录结构体来实现这一模式。 ```c typedef struct { int state; } ...
备忘录模式能够在不破坏封装性的前提下捕获和保存一个对象的内部状态,以便以后能够恢复到该状态。 关键组成部分: - **发起人 (Originator)**:负责创建并保存备忘录对象,在需要时可以恢复备忘录对象中记录的状态...
* 观察者模式(Observer):提供了一种方式来定义对象之间的一种一对多的依赖关系,使得对象可以在状态变化时自动地更新。 * 状态模式(State):提供了一种方式来定义对象的状态,使得对象可以在不同的状态下表现出...
常见的行为型模式包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。 - 观察者模式定义对象间的一种一对多依赖关系,当一个...
"20.Memento+备忘录模式(行为型模式)"将解释如何创建一个安全的存储机制,以及如何在不暴露对象内部细节的情况下,恢复对象到先前的状态。 3. 中介者模式(Mediator Pattern): 中介者模式用以简化多个对象之间的...
`Memento.h`可能包含了一个备忘录类,用于存储和恢复对象的内部状态,同时可能有一个发起者类,负责创建和使用备忘录。 5. **观察者模式(Observer)**:观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态...
备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的先前状态。 以上只是一些基本的设计模式,实际上还有许多其他模式,如策略模式、访问者模式、状态...
#### 观察者模式(Observer) 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 #### 状态模式(State) 允许一个对象在其内部状态改变时改变它的行为...
19. **观察者模式(Observer)**:定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 20. **状态模式(State)**:允许一个对象在其内部状态改变时改变它的...
备忘录模式是一种行为设计模式,它捕获一个对象的内部状态,并允许该对象在以后恢复到先前的状态。这种模式可以用于实现撤销功能。 #### 享元模式(Flyweight) 享元模式是一种结构型设计模式,它用于减少创建大量...
* 备忘录模式:备忘录模式是一种行为型模式,它可以将对象之间的关系建立在备忘录的基础上,以便于更好地实现对象之间的关系。 * 状态模式:状态模式是一种行为型模式,它可以将对象之间的关系建立在状态的基础上,...
Java的`java.util.Observable`和`java.util.Observer`接口实现了这一模式。 8. **备忘录模式(Memento)**: - 备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后...
行为模式包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态...
7. **观察者(Observer)模式**:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Java中,`java.util.Observer`和`java.util.Observable`接口提供了观察...
模板方法模式(TemplateMethod)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、职责链模式(ChainofResponsibility)、命令模式(Command)、访问者模式(Visitor)、调停者模式(Mediator)...