gpt4 book ai didi

代理模式

转载 作者:撒哈拉 更新时间:2024-12-12 00:25:25 58 4
gpt4 key购买 nike

代理(Proxy)模式属于结构型模式的一种。

代理模式为其他对象提供一种代理以控制对这个对象的访问.

Java内置的RMI机制就是一个远程代理模式。JDBC的连接池返回的JDBC连接(Connection对象)是一个虚代理,到执行JDBC查询或更新操作时,才真正创建连接。用代理对象控制对原始对象的访问,是保护代理,比如我们常用的鉴权.

代理模式和装饰者模式有些类似。装饰者模式让调用者自己创建核心类,然后组合各种功能。代理模式不会自己创建再组合,代理模式让调用者以为获取到的是核心类接口,但实际上是代理类.

现实生活中,信用卡是银行账户的代理, 银行账户则是一大堆现金的代理.

代理模式通过封装一个已有接口,让调用方在不改变任何代码的前提下增强某些功能(例如,鉴权、连接池复用等).

代理模式通常有以下组成部分:

  • 服务接口:定义了服务类和代理对象的公共接口。客户端通过此接口与代理对象和真实对象交互。
  • 服务类:实现了服务接口,是真正处理业务逻辑的对象。
  • 代理对象:实现了服务接口,持有服务类的引用,控制对服务类的访问。伪装成服务对象。
  • 客户端:使用代理对象,跟服务进行交互。

延迟创建真实对象示例.

1、服务接口 。

public interface Subject { void request(); }

2、服务类 。

public class RealSubject implements Subject { @Override public void request() { System.out.println("RealSubject: Handling request."); } }

3、代理类 。

public class Proxy implements Subject { private RealSubject realSubject; @Override public void request() { if (realSubject == null) { realSubject = new RealSubject(); // 延迟创建真实对象 } System.out.println("Proxy: Delegating request to RealSubject."); realSubject.request(); // 转发请求给真实对象 } }

4、客户端 。

public class Client { public static void main(String[] args) { Subject proxy = new Proxy(); // 客户端通过代理对象访问 proxy.request(); // 代理对象处理请求 } }

代理模式的优缺点.

优点:

  • 解耦:客户端与真实对象解耦,客户端不需要知道具体的实现细节。
  • 增强功能:代理可以为真实对象增加额外的功能,比如日志记录、性能监控等。

缺点:

  • 增加系统复杂性:引入代理类会增加系统的复杂性。
  • 性能问题:代理类可能会影响性能,尤其是在每次访问都需要经过代理的情况下。

结构型模式差不多了,接下来我们要开始行为型模式了.

这个世界多得是为了生活而拼尽全力的人。-- 烟沙九洲 。

 
 
 
 

最后此篇关于代理模式的文章就讲到这里了,如果你想了解更多关于代理模式的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com