前言 |
说到代理模式, 定义是这样的: 是为某个对象提供一个代理对象,并且由代理对象控制对原对象的访问。
代理模式分为: 代理模式可分为三种 静态代理、动态代理(jdk代理、接口代理)、cglib代理。之前只停留在概念上, 今天要深入的说一下代理模式, 下面分析一下三种类型的实现方式以及优缺点
静态代理 |
静态代理是最简单的代理方式, 分为4步走
- 定义抽象类, 也可以是接口, 主要是定义一些普通的业务类型
public interface ITeacherDao {
void teach();
}
- 定义具体的业务类, 继承(实现)上面抽象类(接口)
public class TeacherDao implements ITeacherDao {
@Override
public void teach() {
System.out.println("我是老师, 正在授课");
}
}
- 定义代理类
public class TeacherDaoProxy implements ITeacherDao{
private ITeacherDao target;
public TeacherDaoProxy(ITeacherDao target) {
this.target = target;
}
@Override
public void teach() {
// TODO Auto-generated method stub
System.out.println("开始");
target.teach();
System.out.println("结束");
}
}
- 定义客户端
public static void main(String[] args) {
TeacherDao teacherDao = new TeacherDao();
TeacherDaoProxy teacherDaoProxy = new TeacherDaoProxy(teacherDao);
teacherDaoProxy.teach();//输出结果: 我是老师, 正在授课
}
优点
- 在不修改目标对象的功能前提下, 嫩通过代理对象对目标功能扩展
缺点
- 代理对象需要和目标对象实现一样的接口, 一旦接口增加了方法, 目标对象与代理对象都要维护
动态代理 |
未完待续