3

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

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

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

我以前从未abstract以这种方式使用过;我只将它更传统地应用于继承树。我尝试了谷歌搜索对 的使用和误用abstract,但我发现的所有资源似乎都不值得信赖,或者没有建议不要以这种方式使用 abstract :

Oracle 关于抽象类和方法的教程。
另一个讨论关键字的网站。

引用第二个链接:“它的目的是纯粹作为类的父级。”

我的新实现是传统的、可原谅的还是完全错误的?

4

3 回答 3

8

您不必将其抽象化,只需将构造函数设为private即可。Abstract告诉开发人员该类用于扩展,而您的示例中并非如此。

private ResourceManager() {
}
于 2013-06-12T09:55:23.717 回答
3

如果我是你,我会像这样隐藏构造函数:

private ResourceManager() {}
于 2013-06-12T09:55:06.337 回答
1

因为它只有静态成员而声明一个类抽象是糟糕的设计吗?

是的。

使其成为最终的并仅为其提供一个私有构造函数。

于 2013-06-12T11:19:57.393 回答