标签:java 对象 代理 目标 add student 详细分析 public
代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。
示例:火车票代售就是代理模式的体现,我们可以从火车票代售点买火车票,代售点代理了火车站对象,提供了买火车票的方法
一:静态代理
- 前提:需要代理对象和目标对象实现一样的接口
- 优点:可以在不修改目标对象的前提下,扩展目标对象的功能
- 缺点:如果目标对象的方法发生改变,比如方法名做了修改,则代理类也要做修改
/** * 接口 * @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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。