已经阅读了如何通过以下步骤使类成为不可变的
- 不要提供"setter"方法 - 修改字段引用的字段或对象的方法.
- 使所有字段成为最终和私有.
- 不允许子类重写方法.最简单的方法是将类声明为final.更复杂的方法是使构造函数私有并在工厂方法中构造实例.
- 如果实例字段包含对可变对象的引用,则不允许更改这些对象:
a.不要提供修改可变对象的方法.
湾 不要共享对可变对象的引用.永远不要存储对传递给构造函数的外部可变对象的引用; 如有必要,创建副本并存储对副本的引用.同样,必要时创建内部可变对象的副本,以避免在方法中返回原始对象.
AM不确定我是否清楚地了解私有构造函数和工厂方法在不变性方面的效用.如果我让类最终,基本上是关闭任何其他类扩展它的所有路径.如何陈述更复杂的方法
我在Singleton模式中看到了私有构造函数,工厂方法,这是有道理的.但是当我们谈论对象不变性时,当我们提到私有构造函数和静态工厂方法时,我们是否也限制了对象构造/实例化?