4

对于 OOP,不可变和不变是同义词吗?

我有一种模糊的感觉,认为存在差异,但我不确定。

我相信不可变通常应用于对象,而不变通常应用于属性/值。

在这两种情况下,对象或变量都将保持不变且“真实”,因此它们看起来非常相似。

感谢您的任何反馈,因为我正在努力提高我对这些术语的理解的准确性,我认为我忽略了细微的差异。

4

2 回答 2

6

不确定这些是否是正确的定义,但对我来说,“不可变”意味着数据结构不会改变,而“不变”是不改变并保持真实的设定条件(但它与特定实例无关数据)

现在使用不可变数据结构有助于确保不变量保持为真,因为它们不会突变,它们不会突然破坏以前为真的不变量。

于 2012-10-05T15:51:30.820 回答
0

不可变是指对象在其生命周期内不发生变化。

  • 一个不可变的字符串。如果连接,它会创建一个新字符串。原来的不变。

不变量是在指定的持续时间内不会改变的保证。它们不必显式地作为属性或值存在。

  • 对象必须始终处于有效状态。
  • 对象必须处于状态 X 才能执行操作 Y。
  • 如果调用操作-X,则保证对象处于状态-X。
  • 实体可以是公司或个人,但不能同时是两者。
  • 一个文件不能同时打开和关闭。
于 2012-10-05T15:54:48.600 回答