Java设计模式之观察者模式
2017-04-21 12:40
309 查看
什么是监听模式:
定义一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时会通知所有观察者
使用监听模式可以解决什么问题?
下面我们通过一个需求来说明,现在我们向服务器请求某项数据,但是服务器需要向第三方设备请求且过程时间比较长,如果让用户一直等待这对用户体验来说是不好的,这时候我们就可以使用观察者模式,我们把请求发送出去然后添加一个监听,当服务器端将数据返回我们才通知用户。
主题对象接口
主题对象
观察者接口
观察者对象
客户端调用
定义一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时会通知所有观察者
使用监听模式可以解决什么问题?
下面我们通过一个需求来说明,现在我们向服务器请求某项数据,但是服务器需要向第三方设备请求且过程时间比较长,如果让用户一直等待这对用户体验来说是不好的,这时候我们就可以使用观察者模式,我们把请求发送出去然后添加一个监听,当服务器端将数据返回我们才通知用户。
主题对象接口
public interface ISubject { //添加观察者 void addObserver(IObserver observer); //移除一个观察者 void removeObserver(IObserver observer); //通知所有观察者 void notifyObserver(String message); }
主题对象
public class Subject implements ISubject { //观察者列表 private ArrayList<IObserver> observers = new ArrayList<>(); public Subject(){ } public void request(final String message){ //模拟向服务器请求数据 new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2000); notifyObserver("服务器返回数据:"+message); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } @Override public void addObserver(IObserver observer) { observers.add(observer); } @Override public void removeObserver(IObserver observer) { observers.remove(observer); } @Override public void notifyObserver(String message) { for (IObserver observer:observers){ observer.handleMessage(message); } } }
观察者接口
public interface IObserver { //主题对象通知 void handleMessage(String messsage); }
观察者对象
public class Observer implements IObserver { @Override public void handleMessage(String messsage) { //处理message System.out.print("message:"+messsage); } }
客户端调用
//主题对象 Subject subject = new Subject(); //观察者,处理服务器返回 IObserver observer = new Observer(); //添加观察者 subject.addObserver(observer); subject.request("请求数据"); //移除观察者 // subject.removeObserver(observer);
相关文章推荐
- java设计模式-观察者模式
- Java设计模式:单态模式,工厂模式,代理模式,观察者模式示例
- java常用类库续3(比较器Comparable、Comparator、观察者设计模式、正则表达式、定时调度)
- java设计模式:观察者模式(Observer)
- JAVA设计模式-观察者模式简单例子
- 使用观察者模式实现Java应用程序设计MVC模式
- Java设计模式_行为模式_观察者模式
- 设计模式---观察者模式(Observer Pattern with java)
- Java设计模式—观察者模式(Observer pattern)
- java 设计模式-观察者模式
- Java设计模式 -- 观察者模式(push方式)
- All About JAVA 关于设计模式中的“观察者模式”
- java设计模式_观察者模式
- Java设计模式-----Observer观察者模式
- Java设计模式之Observer 观察者模式
- Java设计模式 -- 观察者模式(pull方式)
- Java设计模式 Design Pattern:观察者模式 Observer Pattern
- Java设计模式 Design Pattern:观察者模式 Observer Pattern
- 【设计模式】observer观察者模式:模拟java.awt.Button事件监听。
- 设计模式---观察者模式(Observer Pattern with java)