设计模式详解:代理模式
2023-12-25 18:45:27
1. 什么是代理模式?
????????代理模式(Proxy Pattern)是一种结构型设计模式,它允许通过代理对象控制对另一个对象的访问。代理模式在客户端和目标对象之间引入了一个代理对象,客户端通过代理对象间接地访问目标对象,从而提供了一种间接访问的方式。
????????在代理模式中,代理对象拥有与目标对象相同的接口,客户端与代理对象进行交互,代理对象再将请求传递给目标对象。通过这种方式,代理对象可以在不改变目标对象接口的前提下,对目标对象的访问进行控制和扩展。
2.代理模式代码设计
/**
* @Author: stukk
* @Description: 目标对象接口
* @DateTime: 2023-12-25 16:54
**/
public interface Subject {
void request();
}
/**
* @Author: stukk
* @Description: 目标对象的实现
* @DateTime: 2023-12-25 16:57
**/
public class RealSubject implements Subject {
@Override
public void request() {
System.out.println("我是被代理的对象,也就是目标对象");
}
}
/**
* @Author: stukk
* @Description: 代理对象
* @DateTime: 2023-12-25 16:58
**/
public class Proxy implements Subject {
private RealSubject realSubject;
@Override
public void request() {
if (realSubject == null){
realSubject = new RealSubject();
}
preRequest();
realSubject.request();
postRequest();
}
private void preRequest(){
System.out.println("代理:执行之前要干什么操作呢...");
}
private void postRequest(){
System.out.println("代理:执行之后要干什么操作呢...");
}
}
/**
* @Author: stukk
* @Description: 客户端
* @DateTime: 2023-12-25 17:00
**/
public class Client {
public static void main(String[] args) {
Subject subject = new Proxy();
subject.request();
}
}
3. 代理模式的优点以及应用场景
代理模式的优点包括:
- 代理模式可以提供额外的间接层,使得客户端与目标对象解耦,增加了系统的灵活性和可维护性。
- 代理对象可以在不改变目标对象接口的情况下,对目标对象的访问进行控制和扩展,比如添加额外的逻辑、权限验证等。
- 代理模式可以隐藏目标对象的具体实现细节,提供了更好的封装性和安全性。
应用场景:
spring框架中的AOP(面向切面编程)有使用到代理模式,AOP切面就像是被代理的对象,而切点就是代理对象。
安全代理用于控制对目标对象的访问权限,代理对象可以在访问目标对象之前进行权限检查或身份验证。这种方式可以保护目标对象免受未经授权的访问。
还有日志系统,日志代理用于在访问目标对象时添加日志记录的功能,可以记录方法的调用信息、参数、返回值等。这样可以方便地进行系统跟踪、调试和性能分析。
文章来源:https://blog.csdn.net/m0_54409739/article/details/135204172
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!