1. 为什么需要代理设计模式?
      • 在JavaEE分层开发过程中,那个层次对我们来说最重要?
        • DAO—->Service—->Controller
        • JavaEE分层开发中,最为重要的是Service层
      • Service层中都包含了哪些代码?
        • 核心功能
          • 业务运算
          • DAO调用
        • 额外功能(附加功能)
          • 特点
            • 不属于业务
            • 可有可无
            • 代码量小
          • 代表
            • 事务
            • 日志
            • 性能
      • 额外功能出现在service层好不好?
        • Service层的调用者(Controller)角度:需要咋Service层书写额外功能
        • 软件设计者:Service层不需要额外功能
      • 现实生活中的解决方式
    2. 代理设计模式
      • 概念:通过代理类为原始类或目标类增加额外功能
      • 好处:利于原始类的维护
      • 名词解释
        • 目标类(原始类):指的是业务类(核心功能—->业务运算,DAO调用)
        • 目标方法(原始方法):目标类(原始类)中的方法
        • 额外功能(附加功能):日志、事务、性能······
    3. 代理开发的核心要素
      • 代理类=目标类(原始类)+核心功能+代理类要和目标类实现相同的接口(以便保持内部方法一致)
    4. 编码
      • 静态代理:为每一个原始类,手工编写一个代理类(.java .class)

    image.png

    1. 静态代理存在的问题
      • 静态文件数量过多,不利于项目管理

    如:UserService 与UserServiceProxy
    OrderService与OrderServiceProxy

    • 额外功能维护性差
      • 代理类中额外功能修改复杂(麻烦)