设计模式——代理模式

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

代理模式(Proxy Pattern)是一种结构型设计模式,它为其他对象提供一个代理以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介作用,可以添加额外的功能或限制对目标对象的直接访问。

原理

  • 抽象主题(Subject Interface): 定义了目标对象和代理对象共有的接口。
  • 具体主题(Real Subject): 目标类实现抽象主题接口,包含了实际业务逻辑。
  • 代理(Proxy): 也实现了抽象主题接口,并持有对真实主题的引用。代理对象在执行业务方法时可以选择调用真实主题的方法,或者在调用前后增加额外操作。

Java代码示例(使用代理模式实现翻译服务)

// 抽象主题接口
public interface Translator {
    void translate(String text);
}

// 具体主题:真正的翻译服务
public class ChineseTranslator implements Translator {
    @Override
    public void translate(String text) {
        System.out.println("Translating from English to Chinese: " + text);
        // 实际的翻译逻辑...
    }
}

// 代理类:添加额外功能,比如日志记录
public class LoggingTranslator implements Translator {
    private final Translator realTranslator;

    public LoggingTranslator(Translator translator) {
        this.realTranslator = translator;
    }

    @Override
    public void translate(String text) {
        System.out.println("Logging translation request...");
        realTranslator.translate(text);
        System.out.println("Finished logging.");
    }
}

// 客户端
public class Client {
    public static void main(String[] args) {
        // 创建真实对象
        Translator realTranslator = new ChineseTranslator();
        
        // 创建代理对象,传递真实对象
        Translator proxyTranslator = new LoggingTranslator(realTranslator);

        // 客户端使用代理对象进行翻译
        proxyTranslator.translate("Hello, world!");
    }
}

想象你正在经营一家咖啡店,顾客通常会直接向服务员点单。这时,服务员就是咖啡师的代理,他们接收顾客的订单并将之传递给咖啡师制作。同时,服务员还可以在这个过程中做额外的事情,比如记录订单信息、确认库存等。这就是代理模式的一个简化示例:服务员就像是咖啡师的代理,负责管控对咖啡师服务的访问,并在必要时扩展附加功能。文章来源地址https://www.toymoban.com/news/detail-796430.html

应用场景

  • 访问控制:如权限验证、日志记录等,在执行实际业务逻辑之前先进行必要的前置处理。
  • 远程代理:通过网络调用远程对象的方法,隐藏底层通信细节。
  • 缓存代理:在请求实际对象前先检查缓存中是否存在结果,如果存在则直接返回,否则才调用真实对象并缓存结果。
  • 智能引用:如大图加载时先显示低质量的预览图,待高分辨率图片加载完成后再替换。
  • 阻止直接访问敏感对象:例如数据库连接池,每次都是从池子中获取已初始化好的连接,而不是每次都创建新的连接。

适用性

  • 当需要为原对象增加额外功能,如事务管理、日志记录、权限控制等而又不想修改原对象时。
  • 需要控制或延迟对真实对象的访问,如懒加载、资源池等。
  • 需要透明地为真实对象的操作提供增强时。

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

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

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

相关文章

  • 基于Java的设计模式 - 代理模式

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

    2024年02月07日
    浏览(37)
  • Java 与设计模式(13):代理模式

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

    2024年02月09日
    浏览(38)
  • Java设计模式---单例 工厂 代理模式

    单例模式是设计模式中的一种,属于创建型模式。在软件工程中,单例模式确保一个类只有一个实例,并提供一个全局访问点。这种模式常用于那些需要频繁实例化然后引用,且创建新实例的开销较大的类,例如数据库连接池、缓存管理等。 意图 :保证一个类仅有一个实例

    2024年01月24日
    浏览(52)
  • Java设计模式中的代理模式

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

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

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

    2024年01月21日
    浏览(49)
  • 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日
    浏览(44)
  • 【设计模式——学习笔记】23种设计模式——代理模式Proxy(原理讲解+应用场景介绍+案例介绍+Java代码实现)

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

    2024年02月14日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包