设计模式---观察者模式
Posted sgx2019
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式---观察者模式相关的知识,希望对你有一定的参考价值。
观察者模式主要是为了松耦合,通俗的讲是发布订阅,适用于消息通知的场景。
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接收到消息通知
以上是关于设计模式---观察者模式的主要内容,如果未能解决你的问题,请参考以下文章