Преимущества и недостатки использования одного из Singleton или Dependency Injection по сравнению с другим - PullRequest
0 голосов
/ 27 июня 2018

Я знаю простые различия между ними, но когда дело доходит до сценария, в котором я хочу поделиться экземпляром объекта в приложении, я могу сделать это с помощью DI или Singleton.

когда мне в голову приходит этот вопрос, я запутался, поскольку я могу использовать оба, я думаю, что один из них должен быть лучше другого в таких случаях, как многопоточность или JVM для управления памятью или сопровождение кода ...

Может кто-нибудь сказать мне, каковы преимущества и недостатки использования одного из них по сравнению с другим в приведенном выше сценарии и каков правильный выбор?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Во-первых, DI и Singleton являются шаблонами проектирования.

Зависимость инъекций: DI - это способ внедрения зависимых объектов в ваше приложение.

Синглтон: Создайте один-единственный экземпляр объекта. Источник: Дизайн выкройки-синглтона

Может кто-нибудь сказать мне, каковы преимущества и недостатки использования одного из них по сравнению с другим в приведенном выше сценарии и как правильно выбрать ??

DI заботится о создании, настройке и внедрении объектов. Это означает, что DI также может создавать, настраивать и вводить объект Singleton . DI полезен, когда вы хотите сделать создание объекта внешним, слабо связанным и легко обслуживаемым.

Singleton предоставляет только один экземпляр объекта и доступ к нему по всему миру. Этот объект также может быть введен в приложение с помощью DI . Это полезно, когда вам нужен только один объект, требуется ленивая инициализация (создание при первом использовании) и глобальный доступ.

0 голосов
/ 27 июня 2018

Синглтон в шаблоне проектирования, который утверждает, что только один экземпляр на jvm может быть создан (если реализовано правильно).

DI (Внедрение зависимостей) - это шаблон проектирования, который берет на себя ответственность за введение зависимости (инверсия управления). Зависимость может быть одноэлементной / прототипной / ограниченной ... и т. Д. Кроме введения зависимости, шаблоны DI, такие как Spring DI, также управляют жизненным циклом компонента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...