了解Java中的代理和动态代理
2022/11/9 1:24:01
本文主要是介绍了解Java中的代理和动态代理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
代理
代理是一种设计模式。当我们想要添加或更改现有类的某些功能时,我们会创建和使用代理对象。使用代理对象而不是原始对象。通常,代理对象具有与原始对象相同的方法。在Java中,代理类通常扩展原始类。代理具有原始对象的句柄,可以对其调用该方法。
代理,在其最一般的形式中,是一个充当其他事物接口的类。通俗地说,java 中的代理类是“代替”或“代表”另一个类委派责任的类。代理模仿的对象称为实现对象。
java 中的代理类型
Java 中主要有 2 种类型的代理
- 静态代理
- 动态代理
静态代理
手动编写的代理称为静态代理。以下示例适用于 statc 代理
首先,我们可以创建一个要在代理和真实类之间共享的接口。
public interface User { String getType(); }
现在我们有一个接口,我们可以实现特定用户的实现。
public class FreeUser implements User { public String getType() { return "free"; } }
现在我们可以创建一个接口,该接口将扩展用户界面以获取其行为,这些行为可以通过其实现进行代理。Proxy
public interface ProxyUser extends User { }
所以可以通过实施来实现FreeUserProxy
ProxyUser
public class FreeUserProxy implements ProxyUser { private FreeUser freeUser = new FreeUser(); private static final Logger log = LoggerFactory.getLogger(FreeUserProxy.class); public String getType() { log.info("getType() called"); return freeUser.getType(); } }
现在从主类运行代码
public class Day59 { public static void main(String [] args) { User user = new FreeUserProxy(); System.out.println(user.getType()); } }
用法
当我们需要创建一个包装器来覆盖客户端的主对象的复杂性时,使用代理模式。此外,我们可以在代理对象上添加其他行为,以增强代理对象。
优势
-
代理可以隐藏复杂的任务,例如进行网络通信,事务管理,而无需更改实现。
-
代理可用于在实现对象之上插入自定义行为/代码,而无需更改实现对象。有时无法访问外部库的代码进行编辑,自定义行为可以在执行该库提供的方法之前/之后插入。例如,您可以为 java.net.HttpUrlConnection 类编写一个代理来记录所有外部服务调用请求,而无需更改 HttpUrlConnection 的实现。
-
代理模式的另一个优点是安全性。远程代理可用于在客户端中提供代理存根,并在服务器上调用实现。
这篇关于了解Java中的代理和动态代理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-01为什么公共事业机构会偏爱 TiDB :TiDB 数据库在某省妇幼健康管理系统的应用
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署