代码:GitHub |
---|
😃 想看消息订阅/分发模式,请至消息订阅/分发小工具
观察者设计模式(事件触发驱动示例)
0. UML结构图
1. 事件触发驱动示例 Code
1.1 观察者接口
public interface MyObserver {
void onEvent(Object info);
}
1.2 事件引擎
public class EventEngine {
/**
* 观察者集合
*/
private Set<MyObserver> observers = new HashSet<>();
/**
* 注册观察者
* @param observer 观察者
*/
public void register(MyObserver observer) {
observers.add(observer);
}
/**
* 注销观察者
* @param observer 观察者
*/
public void unregister(MyObserver observer) {
observers.remove(observer);
}
/**
* 发送通知
* @param info 信息
*/
public void post(Object info) {
// 遍历观察者集合,通知每个观察者
for (MyObserver observer : observers) {
observer.onEvent(info);
}
}
}
2. 事件触发驱动示例 Test
public class ObserverTest {
public static void main(String[] args) {
EventEngine engine = new EventEngine();
engine.register(new MyObserver() {
@Override
public void onEvent(Object info) {
System.out.println("A info = " + info);
}
});
engine.register(new MyObserver() {
@Override
public void onEvent(Object info) {
System.out.println("B info = " + info);
}
});
new Thread(new Runnable() {
@Override
public void run() {
engine.post("Hello World!");
}
}).start();
}
}