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();
经验分享 程序员 微信小程序 职场和发展