代理模式

本文详细介绍了代理模式的概念及其在软件设计中的应用。通过一个简单的代码示例,解释了如何使用代理模式来控制对真实对象的访问,并展示了如何在访问前后添加额外的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解释

代理模式(proxy),为其他对象提供一种代理以控制对这个对象的访问.
简单理解,代理模式就是访问对象时引入一定程度的间接性,因为有了间接性,就可以在这个间接中添加多种用途.

代理的作用其实就类似于过滤器、 做一些预处理、过滤、后置处理等,代理最重要的就是让你不能直接访问到实际的目标对象,使用的是目标对象的一个代理对象。

具体代码

定义一个接口

public interface Subject {
   void Request();
}

真实的实体

public class RealSubject implements Subject {
    @Override
    public void Request() {
        System.out.print("test real");
    }
}

代理类proxy
* 在访问对象时引用一定程度的间接性,因为间接性,可以在附加很多种用途了代理就是真实对象的代表


public class Proxy implements Subject {
    RealSubject mRealSubject;

    @Override
    public void Request() {
        System.out.print("-------------");
        //调用真实实体的对象,平调用方法
        if (mRealSubject == null) {
            mRealSubject = new RealSubject();
        }
        mRealSubject.Request();
        System.out.print("-------------");
    }
}

测试类
public class Main {

public static void main(String[] args) {
    Proxy proxy = new Proxy();
    proxy.Request();

}

}

“`

静态代理的缺点:

1)代理对象的一个接口只服务于一种类型的对象, 如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。
2)如果接口增加一个方法,除了所有实现类需要实现这个方法外, 所有代理类也需要实现此方法。增加了代码维护的复杂度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值