您的位置:首页 > 移动开发 > Android开发

Android观察者模式学习笔记

2017-11-10 14:49 453 查看

Android观察者模式学习笔记

1新建一个观察者的接口

public interface A {

void updata(String s);//更新数据
}


2新建一个被观察者的接口

public interface B {

void register(A a);//注册观察者

void unregister(A a);//注销观察者

void change();//数据发生改变
}


3新建一个被观察者

public class C implements B {

private ArrayList list = new ArrayList();//用来装载观察者
private int data;//测试数据

@Override
public void register(A a) {//实现注册方法
list.add(a);
}

@Override
public void unregister(A a) {//实现注销方法
int i = list.indexOf(a);
if(i >= 0){
list.remove(i);
}
}

@Override
public void change() {//实现数据改变方法
for(int i = 0; i < list.size(); i++){
A a = (A)list.get(i);//遍历所有的观察者
a.updata(data +"");//执行观察者的更新方法
}
}

public void setData(int data){//测试方法,改变数据测试效果
this.data = data;
change();
}
}


4新建一个观察者

public class D implements A {

@Override
public void updata(String s) {
System.out.print("D类接收到数据变化=" + s);
}
}


5新建一个测试类

public class E {

public static void main(String[] args) {
C c = new C();//被观察者
D d = new D();//观察者
c.register(d);//注册观察者

c.setData(2);//数据发生改变
c.setData(3);//数据发生改变

c.unregister(d);//注销观察者
c.setData(4);//数据发生改变
}
}


6运行结果

D类接收到数据变化=2D类接收到数据变化=3


7总结,可以看到注册之后,数据发生变化时观察者执行了自己的updata()方法,而注销之后就不会在执行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: