gpt4 book ai didi

java - 用于文件写入和模拟数据库的单例与静态类

转载 作者:行者123 更新时间:2023-12-02 05:37:52 24 4
gpt4 key购买 nike

我确实知道这个问题以前已经被问过很多次了,但我无法从中得到我想要的答案。这个问题是,“我应该使用单例还是包含所有静态成员和方法的类?”

我只需要一个实例来实现我想要实现的目标,并且两种方法都可以同样有效。那么设计方面,有没有更好的方法呢?或者我应该使用其中任何一个吗?

第一种情况:

我正在尝试为我的程序编写一个“数据库”类。这个“数据库”使用其他对象来存储和组织数据。然而,数据库本身对数据进行排序和搜索。鉴于它是一个数据库,我只想要它的一个实例。我不想访问多个位置来获取数据。数据库本身会处理这个问题。

注意 - 我已经将其写为枚举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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com