观察者模式在实际运用中非常广泛:非常值得学习,代码也不难,无非两个结构两个实现类,通过业务逻辑编织。
直接上代码
/**
* @author Jay
* @date 2020/7/15 18:34
* @Description:
*/
public interface Observer {
public void collect(String message);
}
/**
* @author Jay
* @date 2020/7/15 18:33
* @Description:
*/
public interface Subject {
public void addObserver(Observer o);
public void removeObserver(Observer o);
public void notifyObserver();
}
/**
* @author Jay
* @date 2020/7/15 18:38
* @Description:
*/
public class Student implements Observer {
private String name;
public Student(String name){
this.name=name;
}
@Override
public void collect(String message) {
System.out.println("同学"+name+"听到:"+message);
}
}
/**
* @author Jay
* @date 2020/7/15 18:35
* @Description:
*/
public class Teacher implements Subject {
List<Observer> Observers=new ArrayList<>();
private String message;
@Override
public void addObserver(Observer o) {
Observers.add(o);
}
@Override
public void removeObserver(Observer o) {
Observers.remove(o);
}
@Override
public void notifyObserver() {
for (Observer observer: Observers) {
observer.collect(message);
}
}
public void teach(String message){
this.message=message;
System.out.println("老师说---:"+message);
notifyObserver();
}
}