Java--设计模式之观察者模式
2013-12-17 11:12
288 查看
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象再状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。我们来看一个老板来了,由秘书通知同事放下手头的事继续工作的小例子。
1、通知者类,包括添加观察者、删除观察者、通知以及通知的内容设置和获取。public interface Subject {
public void attach(Observer observer);
public void detach(Observer observer);
public void notifyObserver();
public String getSubjectState();
public void setSubjectState(String action);
}2、秘书类实现通知者类
1、通知者类,包括添加观察者、删除观察者、通知以及通知的内容设置和获取。public interface Subject {
public void attach(Observer observer);
public void detach(Observer observer);
public void notifyObserver();
public String getSubjectState();
public void setSubjectState(String action);
}2、秘书类实现通知者类
public class Secretary implements Subject{ private List<Observer> observers = new ArrayList<Observer>(); private String action; @Override public void attach(Observer observer) { observers.add(observer); } @Override public void detach(Observer observer) { observers.remove(observer); } @Override public void notifyObserver() { for(Observer observer:observers){ observer.update(); } } @Override public String getSubjectState() { return action; } @Override public void setSubjectState(String action) { this.action = action; } }3、抽象观察者类包括姓名、监听主题和更新方法
public abstract class Observer { protected String name; protected Subject sub; public Observer(String name,Subject sub){ this.name = name; this.sub = sub; } public abstract void update(); }4、同事类继承观察者类,可以是多个同事
public class StockObserver extends Observer{ public StockObserver(String name, Subject sub) { super(name, sub); } @Override public void update() { System.out.println(sub.getSubjectState()+","+name+"关闭股票行情,继续工作!"); } }5、测试
public class Test { public static void main(String[] args) { // 实例化通知者 Secretary secretary = new Secretary(); // 实例化观察者 StockObserver tongshi = new StockObserver("小明",secretary); // 添加观察者 secretary.attach(tongshi); // 设置通知状态 secretary.setSubjectState("老板回来啦"); // 通知同事老板回来了 secretary.notifyObserver(); } }
相关文章推荐
- 设计模式 - 观察者模式(Observer Pattern) Java内置 使用方法
- java设计模式【全】-观察者模式
- Java设计模式透析之 ——观察者模式(Observer)
- Java设计模式之观察者模式(Observer)
- Java设计模式之十(观察者模式)
- java设计模式-观察者模式
- Java设计模式之——观察者模式(Observer)
- java 设计模式学习笔记(12) - 观察者模式
- java设计模式(3) - 观察者模式(Observer)
- java设计模式:观察者模式实例详解(基于java内置观察者)
- Java设计模式之行为型模式(观察者模式)
- 理解java设计模式之观察者模式
- JAVA设计模式--观察者模式
- 浅谈Java设计模式(十五)观察者模式(Observer)
- java设计模式_观察者Observer(一)
- Java设计模式-回调函数和观察者模式
- Java设计模式—观察者模式(Observer pattern)
- java 设计模式这观察者模式
- Java常用类库--观察者设计模式( Observable类Observer接口)
- 设计模式学习笔记---观察者模式Observer pattern(Java版)