大白话讲解Java代理模式

滴答滴:设计模式我是边学边记录,有问题的欢迎大家指出。学习的过程中会借助AI工具,我想说的是我们要把AI工具当作一个学识渊博的学者或者一个便捷的工具,同时要敢于质疑它,不能盲目的觉得对方说的一定是正确的,因为有时它的回答不见得是正确的,我们要带着自己的思考去使用AI工具,不断的和它对话和探讨,最终得出我们想要的答案。

一.什么是代理模式

代理模式是一种常用的结构型设计模式(关注类或对象的组合),允许通过代理对象来控制对另一个对象的访问,代理对象充当客户端与实际对象之间的中介,用于在客户端和实际对象之间添加一层间接层。

代理模式的核心思想是在客户端和目标对象之间引入一个代理对象,这个代理对象可以在调用目标对象的方法前后执行一些额外的操作,如日志记录、安全检查、事务管理等。通过这种方式,可以在不修改目标对象代码的情况下,增加额外的功能或控制。

大白话:代理模式就像是我们生活中找中介帮忙办事一样,代理模式中的“代理”就是那个中介,它替我们(客户端)去和目标对象打交道,并在这个过程中可以添加一些额外的操作,比如找房源、做质量检测等。想象一下,你想要买一套二手房,但自己去找房源、做质量检测、办理过户等手续既费时又费力。这时,你找到了一个中介公司,他们负责帮你找房源、检查房屋质量、协助你办理过户等手续,而你只需要选择心仪的房子并支付费用。在这个过程中,中介公司就是你的代理,它替你完成了原本需要你自己去做的繁琐工作。

二.代理模式分类

1.静态代理 

静态代理是在代码编译阶段就已经生成了代理类,代理类需要实现与目标对象相同的接口。它可以在不修改目标对象的前提下对目标对象的方法进行增强。

代理模式中有抽象目标接口,目标对象,代理对象,

代码示例

// 目标接口  
interface Subject {  
    void request();  
}  
  
// 目标对象  
class RealSubject implements Subject {  
    @Override  
    public void request() {  
        System.out.println("处理真实的请求");  
    }  
}  
  
// 代理类  
class ProxySubject implements Subject {  
    private RealSubject realSubject;  
  
    public ProxySubject(RealSubject realSubject) {  
        this.realSubject = realSubject;  
    }  
  
    @Override  
    public void request() {  
        // 在调用目标对象的方法之前,可以添加一些自定义的操作  
        preRequest();  
          
        // 调用目标对象的方法  
        realSubject.request();  
          
        // 在调用目标对象的方法之后,可以添加一些自定义的操作  
        postRequest();  
    }  
  
    private void preRequest() {  
        System.out.println("请求前的预处理");  
    }  
  
    private void postRequest() {  
        System.out.println("请求后的处理");  
    }  
}  
  
// 客户端代码  
public class Client {  
    public static void main(String[] args) {  
        RealSubject realSubject = new RealSubject();  
        ProxySubject proxySubject = new ProxySubject(realSubject);  
        proxySubject.request(); // 输出:请求前的预处理,处理真实的请求,请求后的处理  
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值