欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 设计模式-代理模式Proxy(结构型)

设计模式-代理模式Proxy(结构型)

2025/2/24 18:35:24 来源:https://blog.csdn.net/qq_43676797/article/details/139609610  浏览:    关键词:设计模式-代理模式Proxy(结构型)

代理模式(Proxy)

代理模式是一种结构型模式,它可以通过一个类代理另一个类的功能。代理类持有被代理类的引用地址,负责将请求转发给代理类,并且可以在转发前后做一些处理

图解

请添加图片描述

角色

  1. 抽象主题(Subject): 定义代理对象和被代理对象的接口
  2. 真实主题(Real Subject):即被代理对象,实现抽象主题的接口。
  3. 代理(Proxy):实现抽象主题接口,持有代理对象的引用,在调用真实主题对象的方法时,可以在调用前后做一些处理
  4. 客户端:使用抽象主题接口来操作真实主题或代理主题,不需要知道具体是哪一个实现类

代码实现

抽象主题

public interface Pay {public void play();
}

真实主题:

public class PayService implements Pay{@Overridepublic void play() {System.out.println("支付成功!");}
}

代理

public class ProxyPayService implements Pay{private Pay pay;public ProxyPayService(Pay pay) {this.pay = pay;}@Overridepublic void play() {System.out.println("支付前,查询余额");pay.play();System.out.println("支付后,积分操作");}
}

客户端:

public class Test {public static void main(String[] args) {PayService payService = new PayService();ProxyPayService proxyPayService = new ProxyPayService(payService);proxyPayService.play();}
}

总结

可以发现代理类只能代理实现Pay接口的类,不够灵活。开发过程中,经常会有日志、事务等的操作是不区分业务逻辑的,可以使用动态代理。

代理模式和装饰模式非常相似,只是在语义上不一样

动态代理

java中的动态代理

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词