观察者模式(Observer Pattern)
2016-07-11 16:00
323 查看
观察者模式,即一个对象发生改变时所有观察它变化的对象都可以接收到回调,做出相应的处理。英文释义:Define a one-to-many dependency between objects so that when one object changes state,all its dependents are nofited and notified and updated automatically.
这里同样以支付SDK项目为例,支付SDK作为公共的插件提供给多个游戏调用,使用过程中会出现,一个游戏调起后未完成支付的情况下,另外一个游戏也同样调起,此时存在两个支付实例,完成支付后要回调对应的支付结果给对应的游戏,就用到了观察者模式。即每个游戏作为观察者,支付SDK作为被观察者。
示例:
观察者接口:
public interface Observer{
public void do();
}
观察者:
public class Observer1 implements Observer{
public void do(){
......
}
}
public class Observer2 implements Observer{
public void do(){
......
}
}
被观察者抽象类:
public abstract class objectabstract{
private ArrayList <Observer> mObserverList=new ArrayList <Observer>();
public void addObserver(Observer observer){
mObserverList.add(observer);
}
public void do(){
for(Observer observer:mObserverList){
observer.do();
}
}
}
被观察者类:
public class object extends objectabstract{
......
addObserver(new Observer());
do();
......
}
这里同样以支付SDK项目为例,支付SDK作为公共的插件提供给多个游戏调用,使用过程中会出现,一个游戏调起后未完成支付的情况下,另外一个游戏也同样调起,此时存在两个支付实例,完成支付后要回调对应的支付结果给对应的游戏,就用到了观察者模式。即每个游戏作为观察者,支付SDK作为被观察者。
示例:
观察者接口:
public interface Observer{
public void do();
}
观察者:
public class Observer1 implements Observer{
public void do(){
......
}
}
public class Observer2 implements Observer{
public void do(){
......
}
}
被观察者抽象类:
public abstract class objectabstract{
private ArrayList <Observer> mObserverList=new ArrayList <Observer>();
public void addObserver(Observer observer){
mObserverList.add(observer);
}
public void do(){
for(Observer observer:mObserverList){
observer.do();
}
}
}
被观察者类:
public class object extends objectabstract{
......
addObserver(new Observer());
do();
......
}
相关文章推荐
- 餐桌_纪中1237_水暴力
- java基础六:数组
- 花1K内存实现高效I/O的RandomAccessFile类
- Ubuntu/Mint更换阿里云源
- Runtime.getRuntime().exec()出现阻塞,导致后续程序无法运行!
- 【项目管理和构建】十分钟教程,eclipse配置maven + 创建maven项目(三)
- DM8168_ETV_V1.1开发板mount主机常见问题
- 刷新页面
- 【项目管理和构建】——Maven下载、安装和配置(二)
- 【那些年遇到的面试题】死锁
- 易语言 运行命令之修改文件属性
- drop、delete、truncate、alter表时show processlist出现Waiting for table metadata lock状态
- 数组中的逆序对
- XZ_iOS之购物车—点击右上角“编辑”按钮,改变所有cell的状态
- [Tjoi2016&Heoi2016]树
- 学习资源
- python requests库介绍
- 安卓笔记(三)
- javascript深入理解js闭包
- HDU1518:Square(DFS)