java – 将Singletons用于不可变的无参数类是不是很糟糕?

我现在正在开发一个小型
Java项目,在这样做的同时,创建了多个类,这些类表示某种常量行为,例如用作其他方法的默认返回值.

现在所有这些共同点是,它们是完全不可变的,并且它们只有一个无参数构造函数.这意味着创建该类的多个实例将始终生成相同的对象.

每次使用这些类时创建一个新实例是否更好?或者这是使用singelton模式的可接受的情况吗?

最佳答案 让我们考虑单例的优缺点,假设你有一个小项目和不可变类,用作默认返回值.

在这种情况下单身人士的优点:

>应用程序构造一个对象而不是许多对象;
请记住,通常构建新对象是Java中的廉价操作.
如果您的对象不能长时间使用,GC会收集它们,而不会对应用程序的性能产生重大影响.如果您不必每秒创建数千个此类对象,则此选项适用.

缺点:

>更多代码可读写;
虽然编写getInstance()方法可能看起来不是什么大问题,但其他人(可能)与您合作将花费一些时间来探索getInstance()在修复错误或仅仅处理某些业务逻辑时的确实做的事情.我已经看到了许多令人惊讶的getInstance()方法,尽管它们有一个传统的名称.
>潜在的并发问题;
即使您的项目很小,您也可能希望使用多个线程.在这种情况下,您必须将getInstance()编写为同步方法,引入double-checked locking,使用枚举或其他内容.
即使您意识到这种特性,也不能保证其他开发人员不会犯错误.

所以我认为没有一个正确的答案,这取决于你将来如何看待项目的演变.

点赞