java动态代理实现与原理详细分析
作者:互联网
代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。
示例:火车票代售就是代理模式的体现,我们可以从火车票代售点买火车票,代售点代理了火车站对象,提供了买火车票的方法
一:静态代理
- 前提:需要代理对象和目标对象实现一样的接口
- 优点:可以在不修改目标对象的前提下,扩展目标对象的功能
- 缺点:如果目标对象的方法发生改变,比如方法名做了修改,则代理类也要做修改
/** * 接口 * @author Ethon * */ public interface Person { void add(); }
/** * 目标对象 * @author Ethon * */ public class Student implements Person { @Override public void add() { System.out.println("这是目标对象中的add()方法"); } }
/** * 代理对象 * @author Ethon * */ public class StudentProxy implements Person{ //目标对象 private Student student; public StudentProxy(Student student){ this.student = student; } @Override public void add() { System.out.println("开启事务..."); // 扩展功能 student.add(); System.out.println("提交事务..."); } }
/** * 测试类 * @author Ethon * */ public class Test { public static void main(String[] args){ //目标对象 Student student = new Student(); //代理对象 StudentProxy proxy = new StudentProxy(student); proxy.add(); } }
输出结果:
开启事务...
这是目标对象中的add()方法
提交事务...
标签:java,对象,代理,目标,add,student,详细分析,public 来源: https://www.cnblogs.com/wakey/p/13974565.html