结构型-代理模式(Proxy)

介绍

代理模式是一种结构型设计模式 让你能够提供对象的替代品或其占位符 代理控制着对于原对象的访问 并允许在将请求提交给对象前后进行一些处理

代理设计模式

真实世界类比

信用卡是一大捆现金的代理

信用卡和现金在支付过程中的用处相同

信用卡是银行账户的代理 银行账户则是一大捆现金的代理 它们都实现了同样的接口 均可用于进行支付 消费者会非常满意 因为不必随身携带大量现金 商店老板同样会十分高兴 因为交易收入能以电子化的方式进入商店的银行账户中 无需担心存款时出现现金丢失或被抢劫的情况

代理模式示例:

我们将创建一个 Image 接口和实现了 Image 接口的实体类。ProxyImage 是一个代理类,减少 RealImage 对象加载的内存占用。

ProxyPatternDemo 类使用 ProxyImage 来获取要加载的 Image 对象,并按照需求进行显示。

 

代理类的内部是调用的被代理类,使用代理类 ProxyImage 来获取被代理类 RealImage 对象。

 

 

 

在 Java 中使用模式

尽管代理模式在绝大多数 Java 程序中并不常见 但它在一些特殊情况下仍然非常方便 当你希望在无需修改客户代码的前提下于已有类的对象上增加额外行为时 该模式是无可替代的

代理模式会将所有实际工作委派给一些其他对象 除非代理是某个服务的子类 否则每个代理方法最后都应该引用一个服务对象

1、java.lang.reflect.Proxy

2、java.rmi.*(即远程方法调用)

3、javax.ejb.EJB 查看评论

4、javax.inject.Inject 查看评论

5、javax.persistence.PersistenceContext

 

 转:https://refactoring.guru/

 转:https://www.runoob.com/design-pattern/proxy-pattern.html

 

posted @ 2020-11-23 15:23  fangyanr  阅读(105)  评论(0编辑  收藏  举报