[一千个类] | 赋值联动

  • 关键词:联动
  • 本文约500字,建议阅读时间3分钟。
[一千个类] | 赋值联动_第1张图片
联动

各位程序员同学有没有过这样一种编程经验:当一个变量被重新赋值时,和它相关联的另外几个变量也需要跟着更新?不妨称这个变量为原生变量,称相关联的变量为这个原生变量的依赖变量

假定原生变量被更新的时候依赖变量的更新在逻辑上是必要的,你会不会考虑将这个必然的联动操作封装起来呢?基于原生变量可能在多个地方被更新这个前提,我会考虑做这件事。理由是:如果已经有多个地方修改了原生变量,同时也要求并且实现了联动操作,我们是可以预见可能还会有更多这样的地方出现的。这个时候问题就来了,为每一处联动操作的地方都书写同样一份代码是不是重复劳动呢?退一步讲,即使我们不害怕代码臃肿冗余,谁又能保证每一次动了原生变量都会记得执行联动操作呢?

因此,我们需要将这件事作为一个整体包裹起来,外部只需要更新最原始的那个触发点—原生变量,剩下的事则交由这个包裹的内部自动完成。以下是用于封装原生变量和联动逻辑的示例接口,供你参考。

/**
 *  赋值包装器,可为一个匿名引用在赋值时绑定特定的操作
 */
public class AssignmentWrapper {
    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,从今天开始,编程这件小事,会多一处分享的去所。有兴趣的朋友可以关注后续。

我的公众号

这里有Swift及计算机编程的相关文章,以及优秀国外文章翻译,欢迎关注~


[一千个类] | 赋值联动_第2张图片
微信公众号.jpeg

你可能感兴趣的:([一千个类] | 赋值联动)