规划形式之署理形式
界说
署理形式(Proxy Pattern)是软件工程中的一种规划形式,它归于结构型形式,用于在不直接拜访实践目标的状况下,经过一个或多个署理目标来直接拜访某个目标或履行某些操作。
意图
这种形式的首要意图是:
- 操控拜访:署理能够在拜访实在目标之前或之后增加额定的操作,如权限查看、推迟初始化、日志记载等。
- 解耦依靠:署理形式答应将客户端与实在目标解耦,使得它们之间的依靠联系经过署理目标来直接完成。
- 增加灵活性:能够在不修正实在目标和客户端代码的状况下,经过署理增加或修正行为。
类型
署理形式(Proxy Pattern)是一种常见的规划形式,它为另一个目标供给一个替代或占位符,以操控对它的拜访。署理形式能够在不修正原始目标的基础上,经过引进署理目标来增加额定的行为或推迟目标的创立。
署理形式有几种不同的类型,包括但不限于:
- 长途署理(Remote Proxy) :为长途目标(坐落不同的地址空间)供给部分代表,躲藏目标坐落不同地址空间的现实。
- 虚拟署理(Virtual Proxy) :推迟一个资源密布的目标的创立,直到实在需求它的时分。
- 保护署理(Protection Proxy) :操控对原始目标的拜访,依据不同的拜访权限供给不同的拜访战略。
- 智能引证(Smart Reference) :在拜访目标时履行额定的动作,比方引证计数、线程安全查看等。
- 缓存署理(Cache Proxy) :为成果供给缓存,加快数据拜访。
- 防火墙署理(Firewall Proxy) :在网络层面操控对目标的拜访,供给安全操控。
- 同步署理(Synchronous Proxy) :在多线程环境中,保证目标在同一时间只被一个线程拜访。
优缺陷
署理形式的优缺陷如下:
长处:
- 目标拜访操控:署理能够在拜访实在目标之前进行权限查看,操控对灵敏目标的拜访。
- 推迟初始化:特别是关于虚拟署理,能够推迟目标的创立,直到实在需求时才进行初始化。
- 增加额定的功用:署理能够在不修正实在目标的状况下,经过在调用前后增加额定的逻辑来扩展目标的功用。
- 解耦依靠:署理形式答应客户端代码与实在目标解耦,客户端经过署理目标接口与实在目标交互,降低了组件之间的耦合度。
- 进步功能:经过长途署理,能够在本地履行某些操作,防止频频的网络通信,进步体系功能。
- 保护实在目标:署理能够保护实在目标不被歹意拜访或乱用,保证目标只承当其应该承当的职责。
- 代码复用:署理目标能够与多个实在目标相关,完成代码的复用。
缺陷:
- 增加杂乱性:引进署理目标会增加体系的规划杂乱性,需求额定的代码来保护署理和实在目标的联系。
- 或许影响功能:署理目标的额定处理或许会引进推迟,尤其是在需求进行杂乱逻辑处理时。
- 署理目标的通明度问题:假如署理目标没有完成Subject接口的一切办法,或许会导致署理目标的运用不如预期通明。
- 资源耗费:运用署理形式或许会耗费更多的资源,因为需求创立和保护署理目标。
- 难以处理一切状况:在某些状况下,署理或许难以处理实在目标的一切办法,特别是当实在目标接口产生改变时,署理目标也需求同步更新。
- 调试困难:因为署理形式引进了直接层,调试时或许难以追寻问题。
- 署理形式的不适用性:关于一些不需求操控拜访或推迟初始化的目标,运用署理形式或许是一种过度规划。
署理形式是一种强壮的规划形式,但应当在恰当的场景下运用,以保证它带来的优点大于其引进的杂乱性和潜在的功能开支。
结构
署理形式一般包括以下人物:
- Subject:界说了实在目标和署理目标的一起接口,这样署理目标能够在任何实在目标呈现的当地运用。
- Real Subject 或 Target:界说了署理所代表的实在目标,包括实践的事务逻辑。
- Proxy:包括对实在目标的引证,并供给与实在目标相同的接口。署理目标在拜访实在目标之前或之后能够增加额定的行为。
类图
以下是运用Mermaid语法制作的上述代码的UML类图: