代理模式属于三大类设计模式中的【结构型模式】。
下面我为您详细解释一下:
目录
1. 设计模式的三大分类
设计模式根据其目的和范围,可以分为三大类:
- 创建型模式: 关注对象的创建机制,试图以适合情境的方式来创建对象。它们使系统独立于如何创建、组合和表示它的对象。
- 例子: 单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。
- 结构型模式: 关注如何将类或对象按某种布局组成更大的结构。它采用继承机制来组合接口或实现,或者通过组合对象来实现新的功能。
- 例子: 代理模式、适配器模式、装饰器模式、桥接模式、外观模式、组合模式、享元模式。
- 行为型模式: 关注对象之间的职责分配和通信。它们特别关注对象之间算法的分配和职责的委派。
- 例子: 观察者模式、策略模式、模板方法模式、责任链模式、命令模式。
2. 为什么代理模式是结构型模式?
代理模式的核心思想是:为一个对象提供一个代理或占位符,以控制对这个对象的访问。
它的重点在于“如何组织类和对象的结构”,以达到以下目的:
- 引入间接层: 在客户端和目标对象之间增加一个代理层。
- 控制访问: 代理可以控制客户端对真实对象的访问(例如,权限检查、延迟加载)。
- 增强功能: 代理可以在不修改真实对象代码的前提下,为其增加额外的功能(例如,日志记录、缓存)。
代理模式通过组合(或聚合)的方式,将真实对象包含在代理对象内部,从而在结构上形成了一个“包装”或“代表”的关系。这种通过组合来构建更复杂、更灵活结构的特点,正是结构型模式的典型特征。
3. 一个简单的比喻
想象一下你要拜访一位忙碌的CEO:
- 真实对象(Real Subject): CEO本人。
- 代理(Proxy): CEO的助理。
- 你(Client): 访问者。
助理(代理)站在你和CEO(真实对象)之间。他/她可能会:
- (访问控制) 先检查你的预约和身份。
- (延迟加载) 如果CEO正在开会,他会让你稍等,而不是直接打扰CEO。
- (增强功能) 记录下所有访客的日志。
这个“助理”的角色,就是在你和CEO之间建立的一个结构,它管理着访问的流程。
总结
| 模式分类 | 核心关注点 | 代理模式的符合点 |
|---|---|---|
| 结构型模式 | 如何组合类和对象以获得更大的结构 | 通过引入代理类,与真实对象组合,形成一个控制访问的间接层结构。 |
| 创建型模式 | 如何创建对象 | 代理模式本身不负责创建对象,它只是控制对已存在(或将被创建)对象的访问。 |
| 行为型模式 | 对象间的通信与职责分配 | 代理模式的主要目的不是定义新的行为或通信流程,而是通过结构来控制访问。 |
因此,代理模式是结构型模式的典型代表。
0 条评论