1.概念
1.1 什么是观察者模式
观察者模式
(Observer Pattern)是一种行为型设计模式,它允许对象在状态改变时通知多个观察者对象。
可以用于mqtt的订阅消息后,根据观察者模式触发获取接收消息并设置相关业务代码。
观察者模式包含以下主要角色:
主题
(Subject):主题是通知者,它知道观察者,提供注册和删除观察者对象的接口。
观察者
(Observer):观察者是接收通知的对象,它实现了更新接口以接收主题的状态。
具体主题
(Concrete Subject):具体主题是主题的具体实现,它维护自己的状态,当状态改变时,它会通知所有的观察者。
具体观察者
(Concrete Observer):具体观察者是观察者的具体实现,它实现更新接口以接收具体主题的状态。
在Java中,观察者模式可以通过java.util.Observable类和java.util.Observer接口来实现。Observable类是主题的抽象,Observer接口是观察者的抽象。
1.2 优点与缺点
优点:
1.降低了系统中对象之间的耦合度,使得系统更容易扩展。
2.可以实现广播机制,自动通知所有相关的对象。
缺点:
1.如果一个主题有很多观察者,通知所有观察者会花费很多时间。
2.如果观察者和主题之间的抽象耦合度很高,观察者和主题必须知道彼此的具体实现,系统会变得复杂。
2.实现方式
import java.util.Observable;
import java.util.Observer;
// 具体观察者1
class BinaryObserver implements Observer {
private Observable observable;
private int state;
public BinaryObserver(Observable observable) {
this.observable = observable;
observable