/**
* Created by TIAN on 2017/11/6.
* 抽象观察者
*/
public interface Observer {
/**
* 更新接口
* @param state
*/
public void update(String state);
}
/**
* Created by TIAN on 2017/11/6.
* 观察者实体
*/
public class ConcreteObserver implements Observer{
private String name;
public ConcreteObserver(String name) {
this.name = name;
}
@Override
public void update(String content) {
System.out.println(name+": "+content);
}
}
/**
* Created by TIAN on 2017/11/6.
* 被观察者
*/
public class AbstractSubject {
/**
* 保存观察者的集合
*/
private List<Observer> list=new ArrayList<>();
/**
* 添加
* @param observer
*/
public void attach(Observer observer)
{
list.add(observer);
}
/**
* 删除
* @param observer
*/
public void detach(Observer observer)
{
list.remove(observer);
}
/**
* 通知所有的观察者
* @param content
*/
public void notifyObservers(String content)
{
for(Observer observer:list)
{
observer.update(content);
}
}
}
/**
* Created by TIAN on 2017/11/6.
* 具体被观察者
*/
public class ConcreteSubject extends AbstractSubject {
}
方法调用
public class Client {
public static void main(String[] args) {
ConcreteSubject subject=new ConcreteSubject();
Observer observer1=new ConcreteObserver("观察者1");
Observer observer2=new ConcreteObserver("观察者2");
Observer observer3=new ConcreteObserver("观察者3");
subject.attach(observer1);
subject.attach(observer2);
subject.attach(observer3);
subject.notifyObservers("今天是2017年11月6号");
}
}