观察者模式android版
来源:互联网 发布:rar解压软件for mac 编辑:程序博客网 时间:2024/06/05 09:57
1、观察者模式定义?
当一个对象状态发生改变,所有依赖于他订阅者都会发生改变(收到状态改变的通知)。
2、观察者模式-应用场景?
场景一:关联场景
场景二:事件多级触发
场景三:跨系统消息交互场景
3、观察者模式-角色划分?
四个角色?
角色一:被观察者(目标对象->抽象)
角色二:具体被观察者(目标对象)
角色三:观察者
角色四:具体观察者
代码示例:
被观察者接口:
public interface SubjectObservable {
//注册观察者
public void addObserver(MyObserva o);
//取消观察者
public void cancelObserver(MyObserva o);
//取消所有观察者
public void cancelAllObservers();
//获得所有观察者数量
public int countObservers();
//发送通知
public void notifyObservers(String msg);
}
被观察者抽象类:
public class MyObservableimplements SubjectObservable {
public ArrayList<MyObserva> obs = new ArrayList<MyObserva>();
//注册观察者
@Override
public void addObserver(MyObserva o){
obs.add(o);
}
//取消观察者
@Override
public void cancelObserver(MyObserva o) {
if (obs.indexOf(o) >= 0)
{
obs.remove(o);
}
// obs.remove(o);
}
//取消所有观察者
@Override
public void cancelAllObservers() {
obs.clear();
}
//获得所有观察者数量
@Override
public int countObservers() {
return obs.size();
}
//发送通知
@Override
public void notifyObservers(String msg) {
for (MyObserva o:obs
) {
o.updata(this,msg);
}
}
}
public interface MyObserva {
public void updata(MyObservable myObservable,String s);
}
具体观察者1:
public class SpecificObserver1implements MyObserva{
@Override
public void updata(MyObservable myObservable, String s) {
}
}
具体观察者2:
public class SpecificObserver2 implements MyObserva{
@Override
public void updata(MyObservable myObservable, String s) {
}
}
测试类:
public class MainActivityextends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
demo1();
}
public void demo1(){
MyObservable obs = new MyObservable();
SpecificObserver1 sp1 = new SpecificObserver1();
SpecificObserver2 sp2 = new SpecificObserver2();
obs.addObserver(sp1);
obs.addObserver(sp2);
obs.notifyObservers("发送通知");
}
}
git_Demo代码
- 观察者模式android版
- Android之观察者模式
- android观察者模式
- Android|Java观察者模式
- Android Observer观察者模式
- Android Observer观察者模式
- android观察者模式
- android 观察者模式
- android--观察者模式
- android 观察者模式解析
- Android 之 观察者模式
- Android观察者模式
- Android中的观察者模式
- Android 观察者模式
- Android 观察者模式
- android 观察者模式
- android 观察者模式
- android 观察者模式
- 随机数字生成器(RNG)和Hash函数组合武器背后的黑暗秘密
- 【Java】新建的web项目的jsp页面报错的解决方法
- GDB调试方法
- SpringMVC+MyBatis整合
- Mysql系列——数据库设计(5)——实例讲解
- 观察者模式android版
- bzoj 4818: [Sdoi2017]序列计数(DP+矩阵快速幂)
- 网络学习
- 集合的实现1--使用对象
- Python中的with语法与上下文管理器
- hihocode#1378 : 网络流二·最大流最小割定理(最大流求最小割集)
- hdu 1002 Java
- C++基础知识三
- 轻而快的CAS