本文主要是介绍设计模式来一发(十七)观察者模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在观察者模式中,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
观察者模式包含一个观察关系管理类Subject类、观察者Observer抽象类、和Observer的扩展实体类。
public class Subject {private List<Observer> observers = new ArrayList<>();private int state;public int getState() {return state;}public void setState(int state) {this.state = state;notifyAllObservers();}public void attach(Observer observer) {observers.add(observer);}public void notifyAllObservers() {for(Observer observer: observers) {observer.update();}}
}
// 观察者抽象类
public abstract class Observer {public Subject subject;public abstract void update();}// 一名观察者
public class ObserverLiLy extends Observer {public ObserverLiLy(Subject subject) {this.subject = subject;this.subject.attach(this);}@Overridepublic void update() {System.out.println("ObserverLiLy update state to : " + subject.getState());}
}// 一名观察者
public class ObserverLucy extends Observer {public ObserverLucy(Subject subject) {this.subject = subject;this.subject.attach(this);}@Overridepublic void update() {System.out.println("ObserverLucy update state to : " + subject.getState());}
}
// 例子
public class LetsDoIt {public static void main(String[] args) {Subject subject = new Subject();new ObserverLiLy(subject);new ObserverLucy(subject);subject.setState(10);subject.setState(20);}}
这篇关于设计模式来一发(十七)观察者模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!