我确实知道这个问题以前已经被问过很多次了,但我无法从中得到我想要的答案。这个问题是,“我应该使用单例还是包含所有静态成员和方法的类?”
我只需要一个实例来实现我想要实现的目标,并且两种方法都可以同样有效。那么设计方面,有没有更好的方法呢?或者我应该使用其中任何一个吗?
第一种情况:
我正在尝试为我的程序编写一个“数据库”类。这个“数据库”使用其他对象来存储和组织数据。然而,数据库本身对数据进行排序和搜索。鉴于它是一个数据库,我只想要它的一个实例。我不想访问多个位置来获取数据。数据库本身会处理这个问题。
注意 - 我已经将其写为枚举Data.BASE
。它使用方法handle(String)
来获取字符串命令并通过调用其他方法来操作其中的数据。我是否应该将 Data.BASE
包装在“静态类”中并使用它与 Data.BASE
进行通信? (我直接与Data.BASE
通信)
第二种情况:
我计划创建一个类,用于从我的程序中加载和保存设置,名为SettingsManager
。它将使用,而不是实现Savable
接口(interface)来操作具有可保存设置的对象。 SettingsManager
将在程序开始和结束时被调用。但是,它只能操作添加到其中的对象 (SettingsManager.add(Savable)
)。就像第一个案例一样,我不需要它的多个实例。我只想要一个实例来跟踪写入和保存首选项。
有没有我想不到的更好的方法来解决这个问题?
我确实认识到这不是一个特定的编码问题。然而,我觉得这些都是重要的设计和风格问题,我将来肯定需要在其他程序中引用。
最佳答案
我会使用依赖注入(inject)。
如果您只需要一个数据库连接器对象,请创建一次并将其传递给需要它的组件。
仅仅因为您只需要一个实例并不意味着您必须使用单例模式/反模式。
关于java - 用于文件写入和模拟数据库的单例与静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24809246/