我正在使用 Gson 将 Json 反序列化为 model ApplicationModel
。我希望这个模型是单例的,这样我就可以在我的应用程序的其他地方访问它。
现在,当 Gson 创建此类的一个实例时,我正在以一种非常规的方式创建单例实例。见下文:
public class ApplicationModel {
private static ApplicationModel instance;
private GeneralVO general;
protected ApplicationModel() {
instance = this;
}
public static ApplicationModel getInstance() {
return instance;
}
public String getVersionDate() {
return general.getVersionDate();
}
}
这是我创建它并稍后在应用程序中重用它的方式:
InputStreamReader reader = new InputStreamReader(is);
ApplicationModel model1 = new Gson().fromJson(reader,ApplicationModel.class);
Log.i("MYTAG", "InputStream1 = "+model1.toString());
Log.i("MYTAG", "Date: "+model1.getVersionDate());
ApplicationModel model2 = ApplicationModel.getInstance();
Log.i("MYTAG", "InputStream1 = "+model2.toString());
Log.i("MYTAG", "Date: "+model2.getVersionDate());
这可以作为getInstance()
返回相同的模型,但不知何故这似乎不正确。
我的问题是“这是一种很好的解决方法还是有更好的解决方案???”
编辑
做单例的更好方法是使用带有一个INSTANCE
元素的枚举。