题目描述:上课铃声响,老师准备讲课,学生们准备听课;下课铃声响,老师准备下课休息,学生准备下课玩耍;
分析:铃声(Ring)作为被观察者,学生和老师作为观察者,根据铃声的改变做出不同的响应;
抽象观察者
package com.hq.szxy;
/**
* 抽象观察者
*/
public interface Observer {
//观察者反应
public abstract void response1();//上课反应
public abstract void response2();//下课反应
}
抽象目标
package com.hq.szxy;
/**
* 抽象目标
*/
import java.util.ArrayList;
import java.util.List;
abstract class Subject {
//定义一个集合存储观察者对象
protected List<Observer> observers = new ArrayList<Observer>();
//增加观察者
public void add(Observer observer) {
observers.add(observer);
}
//删除观察者
public void remove(Observer observer) {
observers.remove(observer);
}
//通知观察者方