署理模式

打印 上一主题 下一主题

主题 880|帖子 880|积分 2640

​署理(Proxy)模式属于结构型模式的一种。署理模式为其他对象提供一种署理以控制对这个对象的访问
Java内置的RMI机制就是一个远程署理模式。JDBC的连接池返回的JDBC连接(Connection对象)是一个虚署理,到实行JDBC查询或更新使用时,才真正创建连接。用署理对象控制对原始对象的访问,是保护署理,比如我们常用的鉴权。
署理模式和装饰者模式有些类似。装饰者模式让调用者自己创建核心类,然后组合各种功能。署理模式不会自己创建再组合,署理模式让调用者以为获取到的是核心类接口,但实际上是署理类。
现实生活中,信用卡是银行账户的署理, 银行账户则是一大堆现金的署理。
署理模式通过封装一个已有接口,让调用方在不改变任何代码的条件下增强某些功能(例如,鉴权、连接池复用等)。
署理模式通常有以下组成部分:

  • 服务接口:定义了服务类和署理对象的公共接口。客户端通过此接口与署理对象和真实对象交互。
  • 服务类:实现了服务接口,是真正处置惩罚业务逻辑的对象。
  • 署理对象:实现了服务接口,持有服务类的引用,控制对服务类的访问。伪装成服务对象。
  • 客户端:使用署理对象,跟服务进行交互。
延迟创建真实对象示例。
1、服务接口
  1. public interface Subject {
  2.     void request();
  3. }
复制代码
2、服务类
  1. public class RealSubject implements Subject {
  2.     @Override
  3.     public void request() {
  4.         System.out.println("RealSubject: Handling request.");
  5.     }
  6. }
复制代码
3、署理类
  1. public class Proxy implements Subject {
  2.     private RealSubject realSubject;
  3.     @Override
  4.     public void request() {
  5.         if (realSubject == null) {
  6.             realSubject = new RealSubject(); // 延迟创建真实对象
  7.         }
  8.         System.out.println("Proxy: Delegating request to RealSubject.");
  9.         realSubject.request(); // 转发请求给真实对象
  10.     }
  11. }
复制代码
4、客户端
  1. public class Client {
  2.     public static void main(String[] args) {
  3.         Subject proxy = new Proxy(); // 客户端通过代理对象访问
  4.         proxy.request(); // 代理对象处理请求
  5.     }
  6. }
复制代码
署理模式的优缺点。
优点:

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

  • 增加系统复杂性:引入署理类会增加系统的复杂性。
  • 性能问题:署理类可能会影响性能,尤其是在每次访问都须要颠末署理的环境下。
结构型模式差不多了,接下来我们要开始行为型模式了。
这个世界多得是为了生活而拼尽全力的人。-- 烟沙九洲
​ ◀ ◀ ◀ ◀
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

愛在花開的季節

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表