什么是发布订阅模式
发布订阅模式是软件开发者很常见的一种设计模式,很多开源库都使用了发布订阅模式,例如RxJava、EventBus、Vue等,所以学习该模式还是很有必要的。
该模式中存在一个或多个发布者,一个或多个订阅者,当发布者发布消息的时候,参与订阅的订阅者会收到对应的消息通知。其实核心原理就是使用一个集合来存储所有的订阅者类,当发布消息的时候遍历这个集合,并调用集合中的每一个订阅者类的通知方法。
下面以一段代码实现发布-订阅原理。
实现发布-订阅原理
一、创建发布者
1、首先定义一个接口,所有的发布者都要实现该接口,该接口定义添加订阅者、发送消息、移除订阅者方法。
public interface IPublisher {
/**
* 添加订阅者
*/
void emit(ISubscriber subscriber);
/**
* 触发消息
*/
void on(String msg);
/**
* 移除订阅者
*/
void remove(ISubscriber subscriber);
}
2、创建发布者
这里以EventBus为例,实现发布者接口,并在该类中创建一个集合来添加存储订阅者。当发布消息的时候遍历该集合,调用订阅者的通知函数,将消息发送出去。
public class EventBus implements IPublisher {
// 定义一个集合来存储订阅者
private ArrayList events = new ArrayList<Subscriber>();
// 发布者名称
private String name;
// 创建发布者
public EventBus(String name) {
this.name = name;