【问题标题】:Why is my variable being updated?为什么我的变量要更新?
【发布时间】:2014-12-09 16:35:00
【问题描述】:

我正在编写一个使用 MVC 和命令模式的程序。在我的具体命令类中,我需要存储模型的先前状态,以便实现撤消/重做功能。

我在创建命令对象时将对模型的引用存储在命令对象中,并存储对需要保留的状态的引用: this.prevState = model.getState();

为什么命令对象中的数据会随着模型对象的变化而更新?除非我在命令对象中告诉它,否则如何在模型中存储有关先前状态的数据而不改变它?

【问题讨论】:

    标签: design-patterns model-view-controller model command state


    【解决方案1】:

    我认为(因为我不知道您使用什么语言)您正在存储一个引用(就像一个指针),它就像一面镜子,您可以查看和修改所引用的内容,因为您正在存储一个方向.还有一些编程语言,这个过程是不可见的(Javascript,Java......)所以我可以寻找的东西(再次,因为我不知道你使用的是什么语言)被称为“复制创建”或“复制初始化”或Copy 的构造函数(我来自西班牙,所以我不知道确切的翻译),如下所示:

    var olderState = new State(stateToSave);
    

    http://en.wikipedia.org/wiki/Object_copy

    您必须对整个副本进行编程是很常见的,如果是这种情况,请记住在创建构造函数时您可以复制原始的,但其他对象可能也需要通过 Copy 构造函数。

    希望它对你有用!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-01
      • 2011-12-08
      相关资源
      最近更新 更多