在我当前的项目中,我有一个将其实例存储在变量中的类。这个实例应该可以被项目中的所有其他类访问,但它只能被它自己的类改变。
我怎样才能做到这一点?
写一个public
getter,但没有 public
setter。和领域本身private
简而言之,就是所谓immutable object
的,构造后的状态是Object
不能改变的。
String
是 immutable 的一个常见例子Class
。
class
immutable
通过以下方式制作 -
overridden
- 制作class
final
,或使用
static
工厂并保持构造函数私有。private
和final
no-argument constructor
结合随后的setXXX
方法调用。setXXX
方法,而是任何可以改变状态的方法有人建议“public getter but no public setter for the private field”。
注意:这仅在字段是原始类型时才有效。
如果是带setter的对象,内容还是可以修改的;因此不是只读的。
有趣的是,Java 语言提供了一些结构来使返回类型为只读,而无需进行深度复制/克隆。
我正在成像 ReadOnly getEmployee() { ...}
可以在许多地方找到用于实例化单例的样板代码,例如参见http://www.javacoffeebreak.com/articles/designpatterns/index.html
请注意,许多人认为单例是一种反模式,因为一旦您的应用程序中充斥着对单例的引用,就很难摆脱它。