观察者模式的学习
来源:锐游网
第一步创建被观察者:
将你需要被观察的对象继承observerable或者注册到被观察者方法类似listview:
//被观察者
class Myobserver extends Observable{
public void changed(){
//设置数据状态改变
setChanged();
//通知状态改变
notifyObservers();
}
}
第二步将你需要依赖该对象的对象实现observer:
我创建了两个对象依赖他在其中通知改变后将调用不同的方法你需要实现的方法:
//观察者1
class data implements Observer {
String name;
public data(String name) {
this.name = name;
}
public void change(){
Log.e( "change: ", name);
}
@Override
public void update(Observable o, Object arg) {
change();
}
}
//观察者2
class data2 implements Observer {
String name;
public data2(String name) {
this.name = name;
}
public void change(){
Log.e( "change: ", name+1);
}
@Override
public void update(Observable o, Object arg) {
change();
}
}
第三步处理方案:
被观察者添加观察对象:
String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Myobserver myobserver=new Myobserver();
name="wang";
data d1=new data(name);
data2 d2=new data2(name);
myobserver.addObserver(d1);
myobserver.addObserver(d2);
myobserver.changed();
}
被观察者发生数据改变调用方法通知观察者改变。其实获取了对象可以直接调用change()方法。
而这种观察者模式其实便是实现了解耦,你只需要操作被观察者其他的方法都会相应的做出改变。而不是挨个去修改。
这种是一种学院派的思想我觉得,真正用起来似乎也就是那么回事。比如说万恶的mvp模式
因篇幅问题不能全部显示,请点此查看更多更全内容