GoF设计模式:代理模式(Proxy Pattern)—对象的间接访问-C/S开发框架
模式概述近年来,代购已逐步成为电子商务的一个重要分支。何谓代购,简单来说就是找人帮忙购买所需要的商品,当然你可能需要向实施代购的人支付一定的费用。代购通常分为两种类型:一种是因为在当地买不到某件商品,又或者是因为当地这件商品的价格比其他地区的贵,因此托人在其他地区甚至国外购买该商品,然后通过快递发货或者直接携带回来;还有一种代购,由于消费者对想要购买的商品相关信息的缺乏,自已无法确定其实际价值而又不想被商家宰,只好委托中介机构帮其讲价或为其代买。 在软件开发中,也有一种设计模式可以提供与代购类似的功能。由于某些原因,客户端无法直接访问某个对象或访问某个对象存在困难时,可以通过一个称之为“代理”的第三者来实现间接访问,该方案对应的设计模式被称为代理模式。 模式定义
代理模式是一种对象结构型模式。在代理模式中引入了一个新的代理对象,代理对象在客户端对象和目标对象之间起到中介的作用,它去掉客户不能看到的内容和服务或者增添客户需要的额外的新服务。 模式结构图代理模式的结构比较简单,其核心是代理类,为了让客户端能够一致性地对待真实对象和代理对象,在代理模式中引入了抽象层,代理模式结构如下图所示: 代理模式包含如下三个角色:
模式伪代码代理模式的结构图比较简单,但是在真实的使用和实现过程中要复杂很多,特别是代理类的设计和实现。
模式应用像上面代理类所实现的接口和所代理的方法都在代码中写死,被称之为 JDK中提供的动态代理只能代理一个或者多个接口,如果需要动态代理具体类或者抽象类,可以使用 补充:一文读懂Java中的动态代理 模式总结代理模式是常用的结构型设计模式之一,它为对象的间接访问提供了一个解决方案,可以对对象的访问进行控制。代理模式类型较多,其中远程代理、虚拟代理、保护代理等在软件开发中应用非常广泛。 主要优点(1) 能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。 (2) 客户端可以针对抽象主题角色进行编程,增加和更换代理类无须修改源代码,符合开闭原则,系统具有较好的灵活性和可扩展性。 此外,不同类型的代理模式也具有独特的优点,例如: (1) 远程代理为位于两个不同地址空间对象的访问提供了一种实现机制,可以将一些消耗资源较多的对象和操作移至性能更好的计算机上,提高系统的整体运行效率。 (2) 虚拟代理通过一个消耗资源较少的对象来代表一个消耗资源较多的对象,可以在一定程度上节省系统的运行开销。 (3) 缓冲代理为某一个操作的结果提供临时的缓存存储空间,以便在后续使用中能够共享这些结果,优化系统性能,缩短执行时间。 (4) 保护代理可以控制对一个对象的访问权限,为不同用户提供不同级别的使用权限。 主要缺点(1) 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢,例如保护代理。 (2) 实现代理模式需要额外的工作,而且有些代理模式的实现过程较为复杂,例如远程代理。 适用场景代理模式的类型较多,不同类型的代理模式有不同的优缺点,它们应用于不同的场合: (1) 当客户端对象需要访问远程主机中的对象时可以使用远程代理。 (2) 当需要用一个消耗资源较少的对象来代表一个消耗资源较多的对象,从而降低系统开销、缩短运行时间时可以使用虚拟代理,例如一个对象需要很长时间才能完成加载时。 (3) 当需要为某一个被频繁访问的操作结果提供一个临时存储空间,以供多个客户端共享访问这些结果时可以使用缓冲代理。通过使用缓冲代理,系统无须在客户端每一次访问时都重新执行操作,只需直接从临时缓冲区获取操作结果即可。 (4) 当需要控制对一个对象的访问,为不同用户提供不同级别的访问权限时可以使用保护代理。 (5) 当需要为一个对象的访问(引用)提供一些额外的操作时可以使用智能引用代理。
参考文档:
开发应用 - 策略模式(Strategy Pattern) 常用设计模式 设计模式 - 外观模式应用(Façade Pattern) ASP.NET IIS程序池被回收导致网站打开慢,IIS配置启用预加载模式-C/S开发框架 软件编程之软件架构设计(学习)-C/S开发框架 GoF设计模式:单例模式(Singleton Pattern)—确保对象的唯一性-C/S开发框架 GoF设计模式:适配器模式(Adapter Pattern)—不兼容结构的协调-C/S开发框架 GoF设计模式:迭代器模式(Iterator Pattern)—遍历聚合对象中的元素 -C/S开发框架 GoF设计模式:组合模式(Composite Pattern)—树形结构的处理-C/S开发框架 GoF设计模式:建造者模式(Builder Pattern)—复杂对象的组装与创建-C/S开发框架 GoF设计模式:访问者模式(Visitor Pattern)—操作复杂对象结构-C/S开发框架 GoF设计模式:享元模式(Flyweight Pattern)—实现对象的复用-C/S开发框架 GoF设计模式:装饰模式(Decorator Pattern)—扩展系统功能-C/S开发框架 GoF设计模式:命令模式(Command Pattern)—请求发送者与接收者解耦-C/S开发框架 GoF设计模式:职责链模式(Chain of Responsibility Pattern)—请求的链式处理-C/S开发框架 GoF设计模式:桥接模式(Bridge Pattern)—处理多维度变化-C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |