编码的时候,经常遇到的情况,就是一个字段变化后,需要做一些相应的变化,比如更新界面。这个时候如果在各个更改这个字段的地方去添加更新界面的代码,其实很不优雅,而且很容易有漏掉的时候。
这时候响应式思想就派上了用场,只需要对这个字段添加监听,只要这个字段更改就触发我的监听器,比如监听回调内容为更新界面,更新界面的方法也只需要在这个监听里面调用一次就好了。真的很干净,思路很清晰啊。
看看代码里咋做的吧。
背景:我现在有一个集合,我集合发生变化,我就要执行一些刷新操作。
首先,自己定义一个监听器。
/**
* 数据修改的时候会触发
*/
interface DataChangeListener {
void update();
}
然后,对集合做一层封装,然后构造的时候就要给一个监听回调DataChangeListener
/**
* 数据包裹
*/
class DataWrap {
private List<SimplePointInfo> pointList = new ArrayList<>();
private DataChangeListener mDataChangeListener;
public DataWrap(DataChangeListener dataChangeListener) {
mDataChangeListener = dataChangeListener;
}
public void add(SimplePointInfo pointInfo) {
pointList.add(pointInfo);
mDataChangeListener.update();
}
public void removeLast() {
if (!pointList.isEmpty()) {
pointList.remove(pointList.size() - 1);
}
mDataChangeListener.update();
}
public void clear() {
pointList.clear();
mDataChangeListener.update();
}
public int size() {
return pointList.size();
}
public boolean isEmpty() {
return pointList.size() == 0;
}
}
这样,我在添加,删除操作这个数据的时候,就会响应式的触发我的监听回调,其实这也是观察者模式,java里面需要自己做这样一层数据的封装,kotlin里面已经做好了这个接口,u1s1,kotlin真的很好用,呜呜。