【问题标题】:Spring framework vs Object Oriented ProgrammingSpring 框架 vs 面向对象编程
【发布时间】:2018-10-28 05:12:46
【问题描述】:

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

【问题讨论】:

    标签: java spring oop architecture frameworks


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      不,不是。 Spring 在创建单例时使用了“模板”。

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

      此外,当保证 Spring 框架可以创建多个实例时。


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

      【讨论】:

        猜你喜欢
        • 2010-09-18
        • 2011-04-11
        • 2011-07-09
        • 1970-01-01
        • 2015-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多