发布订阅模式
发布订阅模式,英文名Publish Subscribe Pattern
该模式通过一个中间调度者,将发布者发布的动态,转发给订阅者
它和观察者模式在功能上非常相似,不同的地方在于
观察者模式是由Observable直接通知Observer
而发布订阅模式则有一个扮演调度中心角色的中介者,专门负责转发事件通知
实现代码
public class EventBus {
Map subscriberMap;
//订阅事件
public void subscribe(Subscriber subscriber, String eventType) {
List subscribers = subscriberMap.get(eventType);
subscribers.add(subscriber);
}
//发布事件
public void publish(String eventType, Object event) {
List subscribers = subscriberMap.get(eventType);
for (Subscriber subscriber : subscribers)
subscriber.onEvent(eventType, event);
}
}
public class Subscriber {
public void onEvent(String eventType, Object event) {
if (eventType.equals("onTimeChange"))
System.out.println("Current Time " + event);
}
}
public class Publisher {
Long time;
public void updateTime() {
time = System.currentTimeMillis();
}
}
public class APP {
public static void main(String... args) {
EventBus eventBus = new EventBus();
Subscriber subscriber = new Subscriber();
Publisher publisher = new Publisher();
//订阅动态
eventBus.subscribe(subscriber, "onTimeChange");
//更新动态
publisher.updateTime();
//发布动态
eventBus.publish("onTimeChange", publisher.time);
}
}