1.为什么需要代理设计模式
1.1问题
在javaEE分层开发中,那个层次对我们来讲最重要
DAO-----> Service ---> Controller
javaEE分层开发中,最为重要的是service层
service层中包含了那些代码?
service层中= 核心功能 +额外功能(附加功能)
1.核心功能:业务运算 DAO调用
2.额外功能:不属于业务 可有可无 代码量很小
事务、日志、性能...
额外功能书写在service层中好不好?
service层调用者的角度:需要在service层书写额外功能。
软件设计者:service层不需要额外功能
现实生活中的解决方式:
2.代理设计模式
2.1概念
通过代理类,为原始类(目标类)增加额外的功能
好处:利于原始类(目标类)的维护
2.2名词解释
1.目标类 原始类
指的是 业务类(核心功能-->业务运算 DAO调用)
2.目标方法 ,原始方法
目标类中的方法 就是目标方法
3.额外功能(附加功能)
日志,事务,性能
2.3代理开发的核心要素
代理类=目标类(原始类)+额外功能+原始类实现相同的接口
房东————> public interface UserService{
m1 方法1
m2 方法2
}
UserServiceIml Implements UserService{
m1 --->业务运算 DAO调用
m2
}
UserServiceProxy impllements UserService{
m1
m2
...
}
2.4编码
静态代理:为每一个原始类,手工编写一个代理类(.java.class)
1.5静态代理存在的问题
1.静态类文件数量过多,不利于项目管理
UserServiceImpl UserServiceProxy
orderServiceImpl OrderServiceProxy
2.额外功能维护性差
代理类中 额外功能修改复杂(麻烦)