静态变量 vs 单例

我正在制作 Java REST 应用程序。我想知道我应该如何实现我的服务 - 我应该为整个应用程序使用静态服务变量还是像在 Spring MVC 中那样将服务作为单例。单例对象和在应用程序中只初始化一次对象有什么区别吗?


吃鸡游戏
浏览 185回答 3
3回答

HUX布斯

我应该为整个应用程序使用静态服务变量还是将服务作为单例这取决于。你必须问自己两个问题才能找到答案:那static variable存储在哪里?您有 2 个选择:声明一个final class Services将所有可用服务保存为public static final变量的变量。在每个服务类中创建一个public static final变量,称为INSTANCE您会看到第一点将所有类都放在同一个位置。可能会聚集在一起,不可读且不易维护。对于第二点,您几乎接近单例情况。我需要懒惰或急切地初始化服务吗?您再次有 2 个选项:懒惰:使用静态持有者模式在第一次使用时懒惰地初始化单例急切:public static final在服务类中创建一个变量,直接创建一个实例。第一点有它的好处。如果您需要分配资源或需要执行任何其他“繁重”操作。这有效,并且是线程安全的对于第二点,您会看到它就像第一个问题中的第二点。结论如前所述,这取决于用例。我可能会一直使用单身人士。因为所有关于它的状态和可用性的逻辑都保存在一个地方。

慕容708150

如果你想要一些实用方法或常量变量,你应该选择 Static 而当一个类可以有状态并且状态可以改变(但对象仍然是一个)时,Singelton 就会出现。

白板的微信

将服务创建为单例,这样您就可以在运行时获得更大的灵活性,因为您可以在不更改代码的情况下注入服务的任何实现。如果您的想法是使用服务类共享一些变量,则将它们标记为最终变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java