代理模式(Proxy Pattern)

代理模式是一种设计模式,用于在访问对象时增加额外控制或隐藏实现细节。它通过引入代理对象,实现对真实对象的访问控制,增加额外功能,如权限检查、缓存等,并能实现解耦合。静态代理在编译时确定代理关系,而动态代理则在运行时通过反射创建。代理模式的优点包括控制访问、增加功能和解耦合,但也会增加系统复杂度并可能导致性能损耗。适用于远程代理、虚拟代理、安全代理和延迟加载等场景。
摘要由CSDN通过智能技术生成

代理模式



一、介绍

代理模式是一种常用的设计模式,它允许通过代理对象来控制对其它对象的访问。在软件开发中,代理模式通常被用来在访问对象时增加一些额外的控制,或者隐藏对象的实际实现细节。

代理模式的核心思想是引入一个代理对象,这个代理对象与原始对象具有相同的接口,客户端可以通过代理对象来访问原始对象。代理对象在调用原始对象的方法之前或之后可以执行一些额外的操作,例如权限检查、缓存、延迟加载等。


二、静态代理与动态代理示例

1.静态代理

在编译时已经确定代理对象与真实对象的关系,代理对象通常直接实现了与真实对象相同的接口或者继承了真实对象的类。

在这个示例中,我们定义了一个 Image 接口,然后有一个真实的图片类 RealImage 实现了该接口,它负责加载并显示图片。然后我们创建了一个代理类 ImageProxy,它也实现了 Image 接口,并且在调用 display() 方法时,会先检查真实图片对象是否已经加载,如果没有则加载,然后显示图片。

// 定义一个接口
interface Image {
   
    void display();
}

// 具体类
class RealImage implements Image {
   
    private String filename;

    public RealImage(String filename) {
   
        this.filename = filename;
        loadFromDisk(filename);
    }

    @Override
    public void display() {
   
        System.out.println("Displaying " + filename);
    }

    private void loadFromDisk(String filename) {
   
        System.out.println("Loading " + filename);
    }
}

// 代理类
class ImageProxy implements 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值