首页 / 设计模式 / JAVA设计模式之代理模式
JAVA设计模式之代理模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA设计模式之代理模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2046字,纯文字阅读大概需要3分钟。
内容图文
学编程吧 JAVA设计模式之代理模式发布了,欢迎通过 xuebiancheng8.com 来访问
一、概述
给某一个对象提供一个代理,并由代理对象来完成对原对象的访问。代理模式是一种对象结构型模式。
二、适用场景
当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。
三、UML类图
650) this.width=650;" src="/upload/getfiles/default/2022/11/15/20221115080632406.jpg" title="JAVA设计模式之代理模式" />
四、参与者
1、接口类:Subject
它声明了真实访问者和代理访问者的共同接口,客户端通常需要针对接口角色进行编程。
2、代理类:ProxySubject
包含了对真实(委托)对象(RealSubject)的引用,在实现的接口方法中调用引用对象的接口方法执行,从而达到代理的作用。看似是代理对象(ProxySubject)在操作,但其实真正的操作者是委托对象(RealSubject)。
3、委托类/真实访问类:RealSubject
它定义了代理角色所代表的真实对象,在真实角色中实现了真实的业务操作,客户端可以通过代理角色间接调用真实角色中定义的操作。
五、用例学习
1、接口类:Subject.java
[java] view plaincopy
-
-
public interface Subject {
-
-
public void visit();
-
}
2、接口实现类, 真实访问对象/委托对象: RealSubject.java
[java] view plaincopy
-
-
public class RealSubject implements Subject {
-
-
@Override
-
public void visit() {
-
System.out.println("I am ‘RealSubject‘,I am the execution method");
-
}
-
-
}
3、接口实现类,代理对象: ProxySubject.java
[java] view plaincopy
-
-
public class ProxySubject implements Subject {
-
// 维持对真实委托对象的引用,该对象才是真正的执行者
-
private Subject realSubject;
-
-
public ProxySubject(Subject subject){
-
this.realSubject = subject;
-
}
-
-
@Override
-
public void visit() {
-
// 真实委托对象 通过 代理对象的引用 间接的实现了对目标对象的访问执行
-
realSubject.visit();
-
}
-
}
4、 客户类 Client.java
[java] view plaincopy
-
-
public class Client {
-
-
public static void main(String[] args) {
-
Subject proxySubject = new ProxySubject(new RealSubject());
-
proxySubject.visit();
-
}
-
-
}
六、其他/扩展
按照代理类的创建时期,代理类可以分为两种:
1、静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。(上面用例介绍的就是 静态代理技术)
静态代理的优劣分析:
优点:客户端面向接口编程,符合开闭原则,使系统具有好的灵活性和扩展性。
缺点:从上面代码中我们可以发现 每一种代理类都是实现了特定的接口,及每一种代理类只能为特定接口下的实现类做代理。如果是不同接口下的其他实现类,则需要重新定义新接口下的代理类。
那么是否可以通过一个代理类完成不同接口下实现类的代理操作呢?那么此时就必须使用动态代理来完成。
2、动态代理:在程序运行时,运用JAVA反射机制动态创建代理实例。
【预告:关于动态代理技术 小吕将会在下一篇中详细介绍】
—————————————————————————————————————
如果文章内容对您有帮助, 不要忘记 顶 一下,来支持一下哦!
如果您对文章内容有任何疑问或有更好的见解, 可以通过评论留言或发邮件的方式联系我:
ice_zhengbin@163.com / ice.zhengbin@gmail.com
如果需要转载,请注明出处,谢谢!!
学编程吧 JAVA设计模式之代理模式发布了,欢迎通过 xuebiancheng8.com 来访问
原文:http://xuebiancheng8.blog.51cto.com/8538278/1601689
内容总结
以上是互联网集市为您收集整理的JAVA设计模式之代理模式全部内容,希望文章能够帮你解决JAVA设计模式之代理模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。