zoukankan      html  css  js  c++  java
  • 设计原则:不要让有状态的类型绑架了无状态类型的生命周期

    情况是这样的

    • 第一步:你学会了面向接口编程。
    • 第二步:如何实例化接口呢?你学会了工厂。
    • 第三步:你学会了万能的工厂:IOC。
    • 第四步:IOC 容器都提倡依赖注入,因此你也学会了。
    • 第五步:无状态的类型的生命周期被有状态的类型给绑架了。

    无状态的类型的生命周期被有状态的类型给绑架了

    企业应用中,大多数的类型都是无状态的,如:Controller、ApplicationService、DomainService、Repository,只有个别的对象才有状态,如:UnitOfWork。因为依赖的问题,按照传统的依赖注入方式设计这些类型,生命周期设置只能设置为最短的那个(木桶定理),第一次发现这种要求,让我很不爽,当时没有敢于违背这种做法,直到读过一些 JSP 和 Spring 的书,才坚定了我的信心,因为:JSP 的 Servlet 是单例的,Spring 默认管理的实例也是单例的。

    假如我们把无状态的对象设置为单例,有状态的对象该如何管理呢?答案很简单:

    • 如果还是保留无状态到有状态的关联,引入一层抽象。
    • 去掉无状态到有状态的关联,采用函数调用级别的依赖(服务定位器)。

    好处

    本该如此,看着更爽了,AOP 可以使用的更广泛了,因为其成本低了。

  • 相关阅读:
    DELPHI中Showmodal与Show的区别
    怎样把一个文件夹里面所有文件的文件名提取出来,放到Excel表格里呢
    Python基础之函数
    Python_Openpyxl
    设计模式
    【转】深入理解递归函数的调用过程
    Java集合的Stack、Queue、Map的遍历
    数据结构-String、char
    leetcode-位运算
    Java web入门
  • 原文地址:https://www.cnblogs.com/happyframework/p/3665387.html
Copyright © 2011-2022 走看看