使用Singleton或依赖注入中的一种相对于另一种的优缺点

时间:2018-06-27 07:48:49

标签: java design-patterns dependency-injection

我知道它们之间的简单区别,但是当我想在应用程序中共享对象实例的场景时,可以使用DI或Singleton来完成。

当我想到这个问题时,我感到很困惑,因为我可以同时使用两者,所以我认为在多线程或内存管理JVM或代码可维护性之类的情况下,其中一个必须比另一个好。 >

在上述情况下,有人可以告诉我使用其中一个优于另一个的优点和缺点吗?正确的选择是什么?

2 个答案:

答案 0 :(得分:1)

设计模式中的每个状态,每个状态只能创建一个实例(如果正确实现)。

DI(依赖注入)是承担责任注入依赖(控制反转)的设计模式。依赖关系可以是单例/原型/范围...等等。除了注入依赖关系之外,像spring DI这样的DI模式还可以控制bean的生命周期。

答案 1 :(得分:1)

首先,DI和Singleton都是设计模式。

依赖注入: DI是一种将依赖对象注入您的应用程序的方法。

单个模式: 创建一个对象的唯一实例。 来源:Design patterns-Singleton

  

在上述情况下,有人可以告诉我使用其中一个优于另一个的优点和缺点吗?

DI负责对象的创建,配置和注入。这意味着DI也可以创建,配置和注入 Singleton 对象。当您要使对象创建外部化,松散耦合且易于维护时,DI很有用。

Singleton仅提供该对象的一个​​实例,您可以在其中全局访问该对象。该对象也可以通过 DI 注入到应用程序中。当您只需要一个对象,需要惰性初始化(首次使用时创建)和全局访问时,这将很有用。