java - 组织 Singleton 类和在项目中处理它的类的最佳方法?
问题描述
假设我有一个设置类,我想将其保留为单例,以便所有其他服务/类等都可以访问相同的东西。
public class Settings {
private static Settings settings;
public static Settings getInstance() {
if (settings == null) {
settings = new Settings();
}
return settings;
}
// More stuff
}
现在说我有一个类,其中包含使用此模型处理“设置”数据的所有静态方法。
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
还是使其成为自己的类更有意义?
我想考虑后者,但如果是这样,我会把SettingsManager
课程放在哪里?什么包?(com.myproject.models,com.myproject.somethingelse?)
解决方案
首先,每次调用 Settings.getInstance() 时都会创建一个新的 Settings 实例。其次,你的 SettingsManager 不应该是 Singleton 吗?否则,每次调用 SettingsManager.initSettings() 时,设置都会被更改。多久会调用一次?(我写这个作为答案是因为我还没有足够的声誉来写评论。)
推荐阅读
- flask - Flask flash 消息导致 Session 不可用
- linkedin - LinkedIn 登录 API 最近间歇性失败
- mysql - 在数据没有键的情况下使用 JSON 提取
- python-3.x - Pandas 聚合特定列中特定值以外的数据
- design-patterns - 实现超时的设计模式
- excel - 组合框选择发生变化,选定的值将在某个字符之后附加到文本框中
- css - 如何使我的背景图像在不同的计算机分辨率上相同?
- c# - 如何在 umbraco 中设置全球文化?
- javascript - 如何在JS中的另一个函数中循环一个函数返回的对象?
- c# - 单元测试的数据准备 - C#