在我的项目中,我使用JSON对象向客户端发送响应。
我的JSONObject
JSONObject jsonObj = new JSONObject();每次我使用new关键字创建json对象时。我不想使用new关键字创建。为此,我可以为此实现Singleton pattern吗?
我的Singletone类代码:
public class SingletonInstance {
private static SingletonInstance instance = new SingletonInstance ();
private SingletonUmtInstance() {
}
// Get the only object available
public static JSONObject getInstance() {
if (instance == null) {
instance = new JSONObject();
return instance;
} else {
return instance;
}
}
}要创建一个实例,我将使用:
JSONObject DBCon = SingletonInstance.getInstance();这是正确的方式吗?
发布于 2017-09-13 10:34:11
Singleton设计模式限制实例化,并确保JVM中只存在类的一个实例。
换句话说,在实现Singleton时,目的是确保每次调用getInstance()方法时都使用完全相同的实例。
对于您的代码,条件if (instance == null)是无用的,您的getInstance()方法相当于:
public static JSONObject getInstance() {
return instance;
}发布于 2017-09-13 11:17:06
在将方法从创建新对象更改为单例或静态方法之前,请确保应用程序不在多线程环境中使用。
您将把json字符串传递给JSONObject构造函数,这意味着它持有状态。将其更改为单例或静态会导致多线程环境中的数据不一致。
对单例实现使用枚举。
发布于 2017-09-13 11:52:08
示例代码片段:
public enum SingletonEnum {
INSTANCE;
public static JSONObject getJsonObject() {
return new JSONObject();
}
}使实例使用
SingletonEnum singleton = SingletonEnum.INSTANCE;使用object类中的hashcode方法确保它保持不变,而不管它被调用的次数是'n‘。
https://stackoverflow.com/questions/46195065
复制相似问题