在我当前的项目中,我有一个将其实例存储在变量中的类。这个实例应该可以被项目中的所有其他类访问,但它只能被它自己的类改变。
我怎样才能做到这一点?
写一个publicgetter,但没有 publicsetter。和领域本身private
简而言之,就是所谓immutable object的,构造后的状态是Object不能改变的。
String是 immutable 的一个常见例子Class。
class immutable通过以下方式制作 -
overridden- 制作class final,或使用
static工厂并保持构造函数私有。private和finalno-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
请注意,许多人认为单例是一种反模式,因为一旦您的应用程序中充斥着对单例的引用,就很难摆脱它。