署理(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(); // 代理对象处理请求
- }
- }
复制代码 署理模式的优缺点。
优点:
- 解耦:客户端与真实对象解耦,客户端不须要知道具体的实现细节。
- 增强功能:署理可以为真实对象增加额外的功能,比如日志记录、性能监控等。
缺点:
- 增加系统复杂性:引入署理类会增加系统的复杂性。
- 性能问题:署理类可能会影响性能,尤其是在每次访问都须要颠末署理的环境下。
结构型模式差不多了,接下来我们要开始行为型模式了。
这个世界多得是为了生活而拼尽全力的人。-- 烟沙九洲
◀ ◀ ◀ ◀
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |