4.1 设计模式分类
本专栏会介绍多种设计模式,为了大家方便理解和对比,首先介绍一下设计模式的分类,后面的章节会根据分类一一介绍设计模式。
根据设计模式设计模式共分为三类:创建型、结构型、行为型和复合模式。
创建型
创建型是控制对象的实例化,将实例化对象的功能收敛,避免用户直接通过new进行创建对象。
创建型包含的设计模式如下:
- 单例模式:通过提供一个全局访问获取该实例的接口,实现类有且仅能拥有一个实例
- 简单工厂模式:通过提供一个包含静态方法的工厂类,对外提供创建实例的接口
- 工厂方法模式:父类工厂类负责定义实例化对象的接口,由子类负责实例化具体对象。(与简单工程模式区别是:简单工程只有一个工厂类,所有的创建都有该工厂类完成)
- 抽象工厂模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品
- 原型模式:通过复制已有实例而产生新的实例
- 建造者模式:将复杂对象拆分成多个相对较为简单的部分,根据需要分别创建
结构性
结构型处理类或者对象之间的组合,主要包含以下几种设计模式:
- 代理模式:通过代理方式访问被访问对象
- 桥梁模式:抽象与实现进行分离,可以独立变化,降低抽象和实现的耦合
- 组合模式:“整体-部分"的关系
- 适配器模式:将一个类的接口转成另一个类的接口提供服务
- 装饰模式:动态给对象新增一些功能、职责
- 外观模式:定义高层接口,以提供对内部多个子接口的使用
- 享元模式:共享来支持对象的复用
行为型
行为型是描述类或对象怎样进行交互和职责分配
- 策略模式:定义一系列算法,并将这些算法进行封装。由调用方决定使用哪一个策略
- 模板方法模式:在父类定义某流程的各个步骤,然后在子类实现具体步骤操作内容
- 观察者模式:当某对象被其他多个对象依赖时,当对象改变后把通知发到其他对象,从而改变其他对象行为
- 责任链模式:将处理请求的对象组成一个类似链式的结构,请求从链中的一个对象传递到下一个对象,直到请求被处理
- 命令模式:将请求封装成对象,将行为调用者与实现者进行解耦
- 解释器模式:提供如何定义语言的文法,以及对语言句子的解释方法
- 迭代器模式:提供一种顺序访问聚合对象中的各元素的方法,而无需暴露该对象的内部表示
- 中介者模式:用中介对象来封装一系列的对象交互。中介者降低了调用方和被调方的耦合,而且可以独立地改变它们之间的交互
- 备忘录模式:记录保存对象的某些状态,以便后续需要恢复
- 访问者模式:在不改变集合元素的前提下,为集合中的每个元素提供多种访问方式
- 状态模式:允许一个对象在其内部状态发生改变时改变其行为