Java Spring框架与面向对象编程

Java Spring框架与面向对象编程,java,spring,oop,architecture,frameworks,Java,Spring,Oop,Architecture,Frameworks,默认情况下,Spring框架将所有bean创建为单例。 这是否与基于模板(类)创建多个对象实例的基本面向对象编程概念相矛盾 这是否与基于模板(类)创建多个对象实例的基本面向对象编程概念相矛盾 不,不是。Spring在创建单例时使用了引擎盖下的“模板” OO原则认为可以创建多个对象。他们并没有说一个类必须有多个实例,如果这是不必要的。事实上,甚至有一个经典的OO设计模式支持这一点1 此外,在保证的情况下,Spring框架可以创建多个实例 1-单例设计模式有它的问题(配置与代码、可测试性等),但它

默认情况下,Spring框架将所有bean创建为单例。 这是否与基于模板(类)创建多个对象实例的基本面向对象编程概念相矛盾

这是否与基于模板(类)创建多个对象实例的基本面向对象编程概念相矛盾

不,不是。Spring在创建单例时使用了引擎盖下的“模板”

OO原则认为可以创建多个对象。他们并没有说一个类必须有多个实例,如果这是不必要的。事实上,甚至有一个经典的OO设计模式支持这一点1

此外,在保证的情况下,Spring框架可以创建多个实例



1-单例设计模式有它的问题(配置与代码、可测试性等),但它在任何方面都不违背OO编程原则。有趣的是,像Spring这样的DI框架实际上有助于解决单例模式的缺点。

好吧,如果你真的想一想,Spring确实让OOP的一些实践变得非常困难/不可能,比如:

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

在spring(以及大多数DI框架)中,这真的很难(甚至不知道是否可能)

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