写一个观察者模式demo,加深自己印象,方便理解
把整个抽象的通知观察者过程比拟成看电影的过程,可能更容易理解一点
//被观察者--电影
public class movie{
privite List<person> persons = new ArryList<person>(); //这个电影的观看者
public String action; //动画
pubilc void setAction(String action){
this.action = action;
nofityAllPersion();
};
public viod joinPerson(Person person){
this.persons.add(person);
}
public void nofityAllPersion(){ //通知每个观看者的方法
for(Person person : persons){
person.look();
}
}
}
//观众的抽象类
public abstract class person{
protected Movie movie;
public abstract viod nofityAllPersion();
}
//观众的实体类
public class Weixiyang extends Person{
public Weixiyang (Movie movie){
this.movie = movie;
this.movie.joinPerson(this);
}
@Override
public void look(){
System.out.println(this.toString + "看到了电影画面");
}
}
//电影开始
public class Demo {
public static void main(String[] args) {
Movie movie = new Movie();
new Weixiyang(movie);
movie.setState(15);
}
}