- 关键词:联动
- 本文约500字,建议阅读时间3分钟。
各位程序员同学有没有过这样一种编程经验:当一个变量被重新赋值时,和它相关联的另外几个变量也需要跟着更新?不妨称这个变量为原生变量,称相关联的变量为这个原生变量的依赖变量。
假定原生变量被更新的时候依赖变量的更新在逻辑上是必要的,你会不会考虑将这个必然的联动操作封装起来呢?基于原生变量可能在多个地方被更新这个前提,我会考虑做这件事。理由是:如果已经有多个地方修改了原生变量,同时也要求并且实现了联动操作,我们是可以预见可能还会有更多这样的地方出现的。这个时候问题就来了,为每一处联动操作的地方都书写同样一份代码是不是重复劳动呢?退一步讲,即使我们不害怕代码臃肿冗余,谁又能保证每一次动了原生变量都会记得执行联动操作呢?
因此,我们需要将这件事作为一个整体包裹起来,外部只需要更新最原始的那个触发点—原生变量,剩下的事则交由这个包裹的内部自动完成。以下是用于封装原生变量和联动逻辑的示例接口,供你参考。
/**
* 赋值包装器,可为一个匿名引用在赋值时绑定特定的操作
*/
public class AssignmentWrapper<T> {
private T value;
/**
* 赋值后置操作接口
*/
public interface IOnAssigned {
/**
* 匿名引用被赋值时的后置操作
*
* @param value 匿名引用对象
*/
void onAssigned(@Nullable Object value);
}
private IOnAssigned onAssigned;
public AssignmentWrapper(IOnAssigned onAssigned) {
this.onAssigned = onAssigned;
}
public void assign(T value) {
this.value = value;
onAssigned.onAssigned(value);
}
public T value() {
return this.value;
}
}
[一千个类] 立个flag,从今天开始,编程这件小事,会多一处分享的去所。有兴趣的朋友可以关注后续。
网友评论