Spring Framework против объектно-ориентированного программирования - PullRequest
0 голосов
/ 17 мая 2018

По умолчанию Spring Framework создает все компоненты как singletons .Разве это не противоречит базовой концепции объектно-ориентированного программирования по созданию нескольких экземпляров объекта на основе шаблона (класса).

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

Ну, если вы действительно об этом думаете, то весна делает некоторые практики ООП действительно трудными / невозможными, скажем:

return new Cached(new ImageLoader("cat.png")).load();

или

return new Parrarel(new ImageLoader("cat.png"), new ImageLoader("dog.png")).load();

Это действительно сложно (нене знаю, если вообще возможно) весной (и большинство DI-фреймворков в целом).

0 голосов
/ 18 мая 2018

Разве это не противоречит базовой концепции объектно-ориентированного программирования, заключающейся в создании нескольких экземпляров объекта на основе шаблона (класса).

Нет, это не так.Spring использует «шаблоны» под капотом при создании синглетонов.

Принципы ОО говорят, что можно создать несколько объектов * .Они не говорят, что должно быть несколькими экземплярами класса, если это не оправдано.И действительно, существует даже классический шаблон проектирования ОО, который поддерживает этот 1 .

И, кроме того, когда это гарантировано, среда Spring может создавать несколько экземпляров.


1 - Шаблон проектирования Singleton имеет свои проблемы (конфигурация в сравнении с кодом, тестируемость и т. Д.), Но он никоим образом не противоречит принципам ОО-программирования.Интересно, что структура DI, такая как Spring, на самом деле помогает устранить недостатки шаблона Singleton.

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