定义
在对象间定义了一对多关系,当对象改变,依赖他的对象会收到通知并更新
代码
/**
* 被观察者对象
*/
public class Subject {
/**
* 存放所有的观察者对象
*/
private List<Observer> observerList;
private String message;
public Subject(){
observerList = new ArrayList<>();
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
notifyObserver();
}
public void add(Observer observer){
observerList.add(observer);
}
public void remove(Observer observer){
observerList.remove(observer);
}
public void notifyObserver(){
for (Observer observer : observerList) {
observer.update(this);
}
}
}
/**
* 观察者抽象类
*/
public interface Observer {
void update(Subject subject);
}
/**
* 观察者实体类
*/
public class User implements Observer {
private String name;
private Subject subject;
public User(String name) {
this.name = name;
}
@Override
public void update(Subject subject) {
this.subject = subject;
System.out.println(name + "收到消息:" + subject.getMessage());
}
}
/**
* 测试类(观察者模式)
*/
public class Test {
public static void main(String[] args) {
Subject subject = new Subject();
Observer observer = new User("张三");
subject.add(observer);
subject.setMessage("java是世界上最好的语言");
}
}