Java观察者模式和发布订阅模式
观察者模式
定义:通过观察者和被观察者来建立一套时间触发机制。
角色:
观察者:需要有一个观察者接口,有一个事件处理方法,具体观察者需要实现事件处理逻辑。
被观察者:提供一个通知观察者的机制,具体实现:被观察者需要持有一个观察者列表,并提供通知观察者的方法,而且被观察者依赖的是观察者的接口,不能依赖观察者的具体实现,所以观察者和被观察者是一种松耦合关系。
发布订阅模式
定义:将事件通知机制中时间触发的责任从被观察者中转移到broker,完全解除被观察者和观察者之间的耦合。
角色
发布者:负责向broker发布消息
broker中间人:负责接受发布的消息和接受订阅者的订阅,并讲发布的消息转发给对应的订阅者,所以broker主要结构是消息列表成员变量和订阅这列表成员变量,成员方法包含:接受发布的消息、接受订阅、以及将消息转发给相关订阅者。
订阅者:负责向broker订阅消息
该模式的使用步骤:
//创建一个发布订阅中心 Broker broker = new Broker(); //创建一个发布者和一个订阅者 并将发布订阅中心引用传递进去 Publisher publisher = new Publisher(); publisher.setBroker(broker); ISubscriber subscriber = new Subscriber(); subscriber.setBroker(broker); //调用订阅者的订阅消息方法 subscriber.subscribe(); //发布消息 publisher.publish("hello"); //通知订阅者 broker.notify();
下一篇:
java代理模式的设计动机