声明类抽象是不好的设计,因为它只有静态成员?

时间:2013-06-12 09:53:32

标签: java static singleton abstract

我的项目中有一个用于加载外部资源(即图像和音频文件)的类。该类只有几个成员:用于存储资源的HashMap字段,以及用于检索资源的getImage(reference)等方法。

我最初实现了singleton pattern,但后来我在链接页面上阅读了一些批评,并考虑使用静态成员。

在愉快地决定静态实现所有类功能之后很久,我正在做一些代码清理。在这样做时,我意识到没有什么能阻止我实例化这个ResourceManager类。这导致我使用abstract关键字对其进行标记。

我之前从未以这种方式使用abstract;我只是常规地为继承树应用它。我尝试使用谷歌搜索abstract的使用和滥用,但我发现的所有资源似乎都不值得信任,或者没有建议不要以这种方式使用摘要:

Oracle's tutorial on abstract classes and methods.
Another site discussing the keyword.

引自第二个链接:"其目的是纯粹作为班级的父母服务。"

我的新实施是传统的,可原谅的,还是仅仅是错误的?

3 个答案:

答案 0 :(得分:8)

您不必将其抽象化,只需将构造函数设为私​​有即可。 摘要告诉开发人员这个类是用于扩展的,而在您的示例中并非如此。

private ResourceManager() {
}

答案 1 :(得分:3)

如果我是你,我只是隐藏这样的构造函数:

private ResourceManager() {}

答案 2 :(得分:1)

  

声明类抽象是不好的设计因为它只有静态成员吗​​?

将其设为最终版并仅为其提供私有构造函数。