1、简介

在观察者模式中,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

2、实现

观察者模式包含一个观察关系管理类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);
	}

	@Override
	public 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);
	}

	@Override
	public 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);
	}

}

 

收藏 打印