作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我现在正在开发一个小型 Java 项目,同时在那里创建了多个类,这些类代表某种常量行为,例如用作其他方法的默认返回值。
现在所有这些的共同点是,它们是完全不可变的,并且它们只有一个无参数构造函数。这意味着创建该类的多个实例将始终产生相同的对象。
是每次使用这些类时只创建一个新实例更好还是使用单例模式是可以接受的情况?
最佳答案
假设您有一个小项目和用作默认返回值的不可变类,让我们考虑单例的优缺点。
优点在这种情况下单例:
缺点:
更多代码读写;虽然编写 getInstance()
方法可能看起来没什么大不了,但其他(可能)与您一起工作的人会花一些时间探索 getInstance()
在修复错误时的真正作用或者只是了解一些业务逻辑。我见过许多令人惊讶的 getInstance()
方法,尽管它们有一个传统的名称。
潜在的并发问题;即使您的项目很小,您也可能希望使用多个线程。在这种情况下,您必须将 getInstance()
编写为同步方法,引入 double-checked locking ,使用枚举或其他东西。即使您知道这种特殊性,也不能保证其他开发人员不会犯错误。
所以我认为没有单一的正确答案,这取决于你如何看待你的项目 future 的发展。
关于java - 将单例用于不可变的无参数类不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54189956/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!