Java设计模式(十三)代理模式

这篇具有很好参考价值的文章主要介绍了Java设计模式(十三)代理模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述

代理模式是一种结构型设计模式,它提供了一个代理对象,充当被代理对象的接口,以控制对被代理对象的访问。代理模式可以在不修改被代理对象的情况下,增加额外的功能或控制访问方式。

二、代码

以下是一个示例代码,说明代理模式的使用:

//1.接口定义
public interface Image {
    void display();
}
//2.具体实现类
public class RealImage implements Image {
    private String filename;

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

    private void loadFromDisk() {
        System.out.println("加载图片: " + filename);
    }

    @Override
    public void display() {
        System.out.println("显示图片: " + filename);
    }
}
//3.代理类
public class ProxyImage implements Image {
    private String filename;
    private RealImage realImage;

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

    @Override
    public void display() {
        if (realImage == null) {
            realImage = new RealImage(filename);
        }
        realImage.display();
    }
}
//4.测试类
public class Test {
    public static void main(String[] args) {
        Image image1 = new ProxyImage("image1.jpg");
        image1.display(); // 加载和显示图像

        Image image2 = new ProxyImage("image2.jpg");
        image2.display(); // 只加载和显示图像

        image1.display(); // 无需重新加载,直接显示图像
    }
}

在上述代码中,我们有一个接口 Image,定义了图像的显示方法 display()。然后我们有一个具体实现类 RealImage,它表示真正的图像对象,并负责从磁盘加载图像并显示。

在代理模式中,我们有一个代理类 ProxyImage,它实现了 Image 接口。代理类持有一个对真实图像对象的引用,并在需要时创建并使用真实图像对象。代理类的 display() 方法首先检查真实图像对象是否已经创建,如果尚未创建,则创建一个真实图像对象并调用其 display() 方法进行图像的加载和显示。

在测试代码中,我们创建了代理对象 ProxyImage,然后调用其 display() 方法来显示图像。当我们第一次调用 display() 方法时,代理对象会创建真实图像对象并加载图像,然后显示图像。当我们再次调用 display() 方法时,代理对象直接使用已创建的真实图像对象进行显示,无需重新加载图像。

通过使用代理模式,我们可以控制对被代理对象的访问,并在必要时进行额外的操作。代理模式提供了一种间接访问对象的方式,对客户端隐藏了对象的具体实现细节,实现了对象的保护和控制。

代理模式通过引入代理对象来控制对被代理对象的访问,提供了一种间接访问的方式。代理对象充当了被代理对象的接口,使得客户端可以通过代理对象来访问被代理对象,同时可以在代理对象中增加额外的功能或控制访问方式。

代理模式的优点包括:

  1. 职责分离:代理模式可以将客户端和被代理对象分离,客户端无需直接与被代理对象交互,减少了客户端与具体实现类的耦合。
  2. 增加功能:代理对象可以在不修改被代理对象的情况下,通过在其方法中添加额外的逻辑,实现对被代理对象的功能扩展。
  3. 控制访问:代理模式可以限制对被代理对象的访问,例如在访问敏感信息时进行权限验证。
  4. 延迟加载:代理对象可以延迟创建和初始化被代理对象,提高系统的性能和资源利用率。

然而,代理模式也存在一些缺点,包括:

  1. 增加复杂性:引入代理对象增加了系统的复杂性,需要维护额外的对象关系。
  2. 增加开销:代理模式可能引入了额外的开销,例如代理对象的创建和调用的间接性。
  3. 部分功能受限:某些类型的代理模式可能会限制被代理对象的部分功能,因为代理对象只实现了被代理对象接口的部分方法。

总结而言,代理模式提供了一种间接访问对象的方式,通过代理对象控制对被代理对象的访问,可以增加功能、控制访问、延迟加载等。它是一种常见的结构型设计模式,广泛应用于需要增加额外功能或控制访问的场景。文章来源地址https://www.toymoban.com/news/detail-440121.html

到了这里,关于Java设计模式(十三)代理模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 与设计模式(13):代理模式

    代理模式是一种结构型设计模式,用于在访问对象时引入一个代理对象,以控制对实际对象的访问。代理对象充当了客户端和实际对象之间的中介,客户端通过代理对象间接地访问实际对象,从而可以在访问过程中添加额外的逻辑或控制。代理模式可以提供对实际对象的保护

    2024年02月09日
    浏览(37)
  • 基于Java的设计模式 - 代理模式

    代理模式是一种使用代理对象来执行目标对象的方法并在代理对象中增强目标对象方法的一种设计模式。简单来讲就是在不修改目标对象的基础上,增强主业务逻辑的设计模式。 代理模式基本可分为三种 静态代理 JDK动态代理 CGLIB动态代理 上述简单分就是静态和动态代理,静

    2024年02月07日
    浏览(36)
  • Java设计模式中的代理模式

    Java设计模式中的代理模式 代理模式是一种结构型设计模式,它提供了一个代理对象,以控制对其他对象的访问。代理可以充当中介,用于控制对真实对象的访问。 代码举例演示 静态代理: 动态代理 区别: 静态代理: 代理类在编译时就已经确定,并且需要为每个被代理的

    2024年01月25日
    浏览(46)
  • 【Java 设计模式】结构型之代理模式

    代理模式(Proxy Pattern)是一种结构型设计模式, 它允许通过一个代理对象控制对其他对象的访问 。代理模式在访问对象时引入了一定程度的间接性,使得可以在访问对象前后进行一些额外的操作。在本文中,我们将深入研究Java中代理模式的定义、结构、使用场景以及如何在

    2024年01月21日
    浏览(48)
  • Java设计模式之代理模式--经纪人的工作

    本文主要讲述 代理模式 ,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。 代理模式是23种设计模式中 结构型模式 的一种,它的核心是通过代理类来完成其他对象的访问,降低访问者和被访问者的耦合度,也对功能进行了增强。 每个艺人

    2024年02月09日
    浏览(44)
  • Java复习-20-接口(3)- 代理设计模式

    功能:可以帮助用户将所有的开发注意力只集中在核心业务功能的处理上。 代理模式(Proxy Pattern)是一种结构性模式。代理模式为一个对象提供了一个替身,以控制对这个对象的访问。即通过代理对象访问目标目标对象,可以在目标对象实现的基础上,增强额外的功能操作,即

    2024年02月09日
    浏览(38)
  • Java 设计者模式以及与Spring关系(四) 代理模式

    目录 简介: 23设计者模式以及重点模式 代理模式(Proxy Pattern) 静态代理示例 spring中应用 动态代理 1.基于JDK的动态代理 target.getClass().getInterfaces()作用 内名内部类写法(更简洁,但不推荐) 2.基于CGLIB实现 spring中应用 本文是个系列一次会出两个设计者模式作用,如果有关联就三

    2024年01月23日
    浏览(49)
  • JAVA设计模式6:代理模式,用于控制对目标对象的访问

    作者主页 :Designer 小郑 作者简介 :3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,阿里云社区专家博主,蓝桥云课讲师。 代理模式是一种常用的设计模式,它提供了一个代理对象,用于控制对目标对象的访问 。 在代理模式

    2024年02月07日
    浏览(43)
  • 【设计模式——学习笔记】23种设计模式——代理模式Proxy(原理讲解+应用场景介绍+案例介绍+Java代码实现)

    代理模式 为一个对象提供一个代理对象,以控制对这个对象的访问 。即通过代理对象访问目标对象,这样做的好处是:可以在不修改目标对象代码的基础上,增强额外的功能操作,即扩展目标对象的功能 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对

    2024年02月14日
    浏览(43)
  • java的面向对象编程(oop)——static概述及初始单例设计模式

    过了入门阶段,开始学习进阶语法了。每天进步一点点,打好基础,daydayup! 什么是面向对象编程(oop),可以看这篇 java的面向对象编程(oop)概述及案例  static的意思为静态,用于修饰成员变量及成员方法。 成员变量根据有无static可以分为两种 ——类变量及实例变量 1,类

    2024年01月19日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包