我确实认识到这个问题之前已被多次提出过,但我无法得到我想要的答案。那个问题是,"我应该使用包含所有静态成员和方法的单例或类吗?"
我只需要一个实例来实现我想要达到的目标,两种方式都可以同样有效。所以,设计方面,还有更好的方法吗?或者我应该使用其中任何一个?
我正在尝试编写一个"数据库"我的课程的课程。这个"数据库"使用其他对象来存储和组织数据。但是,数据库本身会对数据进行排序和搜索。鉴于它是一个数据库,我只想要它的一个实例。我不想要访问多个地方的数据。数据库本身处理这个问题。
注意 - 我已将其编写为enum Data.BASE
。它使用方法handle(String)
来获取字符串命令并通过调用其他方法来操纵其中的数据。我是否应该将Data.BASE
包裹在"静态类"并用它来与Data.BASE
交谈? (我直接与Data.BASE
)
我计划创建一个类,用于加载和保存名为SettingsManager
的程序中的设置。它将使用,而不是实现Savable
接口来操纵具有可保存设置的对象。程序开始和结束时将调用SettingsManager
。但是,它只能操作添加到它的对象(SettingsManager.add(Savable)
)。就像第一种情况一样,我不需要多个实例。我只想要一个实例跟踪写作和保存首选项。
有没有更好的解决方法,我无法想到?
我确实认识到这不是一个具体的编码问题。但是,我觉得这些是重要的设计和风格问题,我将来需要参考其他程序。
答案 0 :(得分:2)
我会使用依赖注入 如果只需要一个数据库连接器对象,请创建一次并将其传递给需要它的组件 仅仅因为你只想要一个实例并不意味着你必须使用单例模式/反模式。
答案 1 :(得分:0)
对于第一种情况,如果它只是JVM中任何给定时间的一个实例,那么将其设为最终静态;这更快。
对于第二种情况,如果SettingsManager
正在操纵数据库中的数据,那么您可以执行依赖注入,让框架决定何时启动和销毁它。
您提供的信息并不多,所以我无法准确地告诉您什么是更好的。例如,如果我们知道您正在使用Java EE或Java SE,或者您正在使用任何框架(如Spring - SpringMVC),这将有助于我们为您提供更好的建议。