【设计模式】代理模式
代理模式
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。
简单得说,代理,就是自己委托代理者去帮自己完成某项工作。类似于中介得存在。
在网上找得代理模式适用场景:
-
当客户端对象需要访问远程主机中的对象时可以使用远程代理。
-
当需要用一个消耗资源较少的对象来代表一个消耗资源较多的对象,从而降低系统开销、缩短运行时间时可以使用虚拟代理,例如一个对象需要很长时间才能完成加载时。
-
当需要为某一个被频繁访问的操作结果提供一个临时存储空间,以供多个客户端共享访问这些结果时可以使用缓冲代理。通过使用缓冲代理,系统无须在客户端每一次访问时都重新执行操作,只需直接从临时缓冲区获取操作结果即可。
-
当需要控制对一个对象的访问,为不同用户提供不同级别的访问权限时可以使用保护代理。
-
当需要为一个对象的访问(引用)提供一些额外的操作时可以使用智能引用代理。
上述代码并没有问题,但我测试了一下,将Subject类完全删掉,也并没有出现任何错误,逻辑也是通的。那为什么还需要这个模式?
解释:
-
其实能问出这个问题,说白了对面向对象编程还是没有融入骨子里。
-
代理模式的作用,能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。增加和更换代理类无须修改源代码,符合开闭原则。(设计模式的出现就是为了降低模块间的耦合,提高模块内的内聚)
-
其次,这也确实是代理模式的缺点:因为增加了代理对象、还可能需要额外的工作,所以可能会导致请求处理速度变慢、实现过程复杂的问题。

浙公网安备 33010602011771号