标签:arraylist port src 程序 notify 适用于 ide ring strong
观察者模式主要是为了松耦合,通俗的讲是发布订阅,适用于消息通知的场景。
1、定义
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
2、UML
3、案例
定义主题接口:
package ilan.Observer; public interface Subject { void registerObserver(Observer observer); void removeObserver(Observer observer); void notifyObservers(); }
定义主题实现类:
package ilan.Observer; import java.util.ArrayList; import java.util.List; public class ConcreteSubject implements Subject { private List<Observer> observers = new ArrayList<>(); @Override public void registerObserver(Observer observer) { observers.add(observer); } @Override public void removeObserver(Observer observer) { observers.remove(observer); } @Override public void notifyObservers() { for (Observer o : observers) { o.update("消息通知"); } } }
定义观察者接口:
package ilan.Observer; public interface Observer { void update(String message); }
定义观察者实现类:
package ilan.Observer; public class ConcreteObserver1 implements Observer { @Override public void update(String message) { System.out.println("观察者1接收到" + message); } }
package ilan.Observer; public class ConcreteObserver2 implements Observer { @Override public void update(String message) { System.out.println("观察者2接收到" + message); } }
编写测试程序:
package ilan.Observer; public class MainClass { public static void main(String[] args) { Subject subject = new ConcreteSubject(); Observer c1 = new ConcreteObserver1(); Observer c2 = new ConcreteObserver2(); subject.registerObserver(c1); subject.registerObserver(c2); subject.notifyObservers(); } }
测试结果:
观察者1接收到消息通知
观察者2接收到消息通知
标签:arraylist port src 程序 notify 适用于 ide ring strong
原文地址:https://www.cnblogs.com/sgx2019/p/11300086.html