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

- 静态代理存在的问题
- 静态文件数量过多,不利于项目管理
如:UserService 与UserServiceProxy
OrderService与OrderServiceProxy
- 额外功能维护性差
- 代理类中额外功能修改复杂(麻烦)
