中文名 | 英文名 | 描述 | 适应场景 |
---|---|---|---|
代理 | Proxy | 为其它对象提供一个代理以控制对这个对象的访问 | 让你能够提供对象的替代品或其占位符 |
桥接 | Bridge | 将对象部分与它的实现部分分离,使它们都可以独立地变化 | |
装饰 | Decorator | 动态地给一个对象添加一些额外的职责 | Java IO 类库 |
适配器 | Adapter | 奖一个类的接口转换成客户希望的另一个接口 | 在 Java 日志中的应用 |
门面(外观) | Facade | 为子系统中的一组接口提供一个一致的界面 | 为程序库、 框架或其他复杂类提供一个简单的接口 |
组合(组成) | Composite | 将对象组合成树形结构以表示”部分-整体”的层次结构 | |
享元 | Flyweight | 运用共享技术有效地支持大量细粒度的对象 | 通过共享多个对象所共有的相同状态 |
代理模式:代理模式在不改变原始类接口的条件下,为原始类定义一个代理类,主要目的是控制访问,而非加强功能,这是它跟装饰器模式最大的不同。代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理。代理模式常用在业务系统中开发一些非功能性需求,比如:监控、统计、鉴权、限流、事务、幂等、日志
桥接模式:可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。桥接模式的目的是将接口部分和实现部分分离,从而让它们可以较为容易、也相对独立地加以改变。
装饰器模式:装饰者模式在不改变原始类接口的情况下,对原始类功能进行增强,并且支持多个装饰器的嵌套使用。
适配器模式:适配器模式是一种事后的补救策略。适配器提供跟原始类不同的接口,而代理模式、装饰器模式提供的都是跟原始类相同的接口。应用: 1. 封装有缺陷的接口设计 2. 统一多个类的接口设计 3. 替换依赖的外部系统 4. 兼容老版本接口 5. 适配不同格式的数据
门面(外观): 1.如果你需要一个指向复杂子系统的直接接口, 且该接口的功能有限, 则可以使用外观模式 2.如果需要将子系统组织为多层结构, 可以使用外观。
组合(组成): 将一组对象组织成树形结构,将单个对象和组合对象都看做树中的节点,以统一处理逻辑,并且它利用树形结构的特点,递归地处理每个子树,依次简化代码实现
享元: 连接池,被共享的单元。享元模式的意图是复用对象,节省内存,前提是享元对象是不可变对象