我的项目中有一个用于加载外部资源(即图像和音频文件)的类。该类只有几个成员:用于存储资源的HashMap字段,以及用于检索资源的getImage(reference)
等方法。
我最初实现了singleton pattern,但后来我在链接页面上阅读了一些批评,并考虑使用静态成员。
在愉快地决定静态实现所有类功能之后很久,我正在做一些代码清理。在这样做时,我意识到没有什么能阻止我实例化这个ResourceManager
类。这导致我使用abstract
关键字对其进行标记。
我之前从未以这种方式使用abstract
;我只是常规地为继承树应用它。我尝试使用谷歌搜索abstract
的使用和滥用,但我发现的所有资源似乎都不值得信任,或者没有建议不要以这种方式使用摘要:
Oracle's tutorial on abstract classes and methods.
Another site discussing the keyword.
引自第二个链接:"其目的是纯粹作为班级的父母服务。"
我的新实施是传统的,可原谅的,还是仅仅是错误的?
答案 0 :(得分:8)
您不必将其抽象化,只需将构造函数设为私有即可。 摘要告诉开发人员这个类是用于扩展的,而在您的示例中并非如此。
private ResourceManager() {
}
答案 1 :(得分:3)
如果我是你,我只是隐藏这样的构造函数:
private ResourceManager() {}
答案 2 :(得分:1)
声明类抽象是不好的设计因为它只有静态成员吗?
是
将其设为最终版并仅为其提供私有构造函数。