观察者模式(发布-订阅模式)
用途:
(1)可用于拦截过滤器
(2)订单创建成功后的一些后续逻辑(消息提醒,订单打印,物品打包等)
(3)需要由统一调度中心调度的一系列任务等
消息推送接口:
public interface Subject {//添加订阅者void addObserver(Observer observer);//移除订阅者void removeObserver(Observer observer);//通知订阅者void notifyObservers(String message);
}
消息推送实现着:
public class ConcreteSubject implements Subject{//订阅者集合ArrayList<Observer> observers = new ArrayList<>();@Overridepublic void addObserver(Observer observer) {observers.add(observer);}@Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}@Overridepublic void notifyObservers(String message) {for (Observer observer : observers) {observer.update(message);}}
}
订阅者接口
public interface Observer {void update(String message);}
订阅者1
public class ObserverOne implements Observer{@Overridepublic void update(String message) {System.out.println("ObserverOne"+message);}
}
订阅者2
public class ObserverTwo implements Observer{@Overridepublic void update(String message) {System.out.println("ObserverTwo"+message);}
}
测试:
public class Tes {public static void main(String[] args) {ConcreteSubject concreteSubject = new ConcreteSubject();concreteSubject.addObserver(new ObserverOne());concreteSubject.addObserver(new ObserverTwo());concreteSubject.notifyObservers("hello world");}
}