组织 Singleton class 和在项目中处理它的 class 的最佳方式?
Best way to organize Singleton class and a class that handles it in a project?
假设我有一个设置 class,我想将其保留为单例,这样所有其他 services/classes 等都可以访问相同的东西。
public class Settings {
private static Settings settings;
public static Settings getInstance() {
if (settings == null) {
settings = new Settings();
}
return settings;
}
// More stuff
}
现在假设我有一个 class,其中包含使用此模型处理 "Settings" 数据的所有静态方法。
public class SettingsManager() {
public static Settings initSettings() {
// Pull some data from the db
String foo = db.getSomeData();
return Settings.getInstance().setFoo(foo); // etc
}
}
// Other static methods to update, etc.
我不想将 SettingsManager
中的逻辑放到 Settings
中,因为它将不再是一个模型,因为它将包含查询数据库等的逻辑。
将 SettingsManager
保留为 Settings
的内部 class 是更好的方法,还是让它成为自己的 class 更有意义?
我想考虑后者,但如果是这样,我应该把 SettingsManager
class 放在哪里?什么包裹? (com.myproject.models, com.myproject.somethingelse ?)
首先,您每次调用 Settings.getInstance() 时都会创建一个新的设置实例。其次,你的 SettingsManager 不应该是 Singleton 吗?
否则,每次调用 SettingsManager.initSettings() 时设置都会更改。多久调用一次?
(我写这个作为答案是因为我还没有足够的声誉来写评论。)
假设我有一个设置 class,我想将其保留为单例,这样所有其他 services/classes 等都可以访问相同的东西。
public class Settings {
private static Settings settings;
public static Settings getInstance() {
if (settings == null) {
settings = new Settings();
}
return settings;
}
// More stuff
}
现在假设我有一个 class,其中包含使用此模型处理 "Settings" 数据的所有静态方法。
public class SettingsManager() {
public static Settings initSettings() {
// Pull some data from the db
String foo = db.getSomeData();
return Settings.getInstance().setFoo(foo); // etc
}
}
// Other static methods to update, etc.
我不想将 SettingsManager
中的逻辑放到 Settings
中,因为它将不再是一个模型,因为它将包含查询数据库等的逻辑。
将 SettingsManager
保留为 Settings
的内部 class 是更好的方法,还是让它成为自己的 class 更有意义?
我想考虑后者,但如果是这样,我应该把 SettingsManager
class 放在哪里?什么包裹? (com.myproject.models, com.myproject.somethingelse ?)
首先,您每次调用 Settings.getInstance() 时都会创建一个新的设置实例。其次,你的 SettingsManager 不应该是 Singleton 吗? 否则,每次调用 SettingsManager.initSettings() 时设置都会更改。多久调用一次? (我写这个作为答案是因为我还没有足够的声誉来写评论。)