java代理模式

代理模式是一种结构型设计模式,它允许一个对象(代理)作为另一个对象(真实对象)的接口来控制访问。代理对象可以在不改变真实对象的情况下,添加一些额外的功能,例如延迟加载、访问控制、缓存等。

以下是一个简单的 Java 代理模式示例,使用一个虚拟代理来控制对真实图片对象的访问。虚拟代理会在需要时延迟加载真实图片对象。

// 定义一个共享的图片接口
interface Image {
    void display();
}

// 创建真实图片类
class RealImage implements Image {
    private String filename;

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

    private void loadImageFromDisk() {
        System.out.println("Loading image from disk: " + filename);
    }

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

// 创建代理图片类
class ProxyImage implements Image {
    private RealImage realImage;
    private String filename;

    public ProxyImage(String filename) {
        this.filename = filename;
    }

    public void display() {
        if (realImage == null) {
            realImage = new RealImage(filename);
        }
        realImage.display();
    }
}

public class ProxyPatternExample {
    public static void main(String[] args) {
        // 创建代理图片对象
        Image image = new ProxyImage("sample.jpg");

        // 第一次显示图片 - 会加载真实图片对象
        image.display();

        // 第二次显示图片 - 不会再加载真实图片对象
        image.display();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlgorithmHero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值