- 学习参考:重构大师
创建型模式
- 创建型模式提供了创建对象的机制, 能够提升已有代码的灵活性和可复用性。
工厂方法模式
- 在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型;
- 实现方式:使用特殊的工厂方法代替对于对象构造函数的直接调用 (即使用 new运算符), 对象仍将通过 new运算符创建, 只是该运算符改在工厂方法中调用罢了。 工厂方法返回的对象通常被称作 “产品”。
抽象工厂模式
- 创建一系列相关的对象, 而无需指定其具体类;
- 实现方式:
- 对于系列产品的每个变体, 都将基于抽象工厂接口创建不同的工厂类,每个工厂类都只能返回特定类别的产品;
- 客户端代码可以通过相应的抽象接口调用工厂和产品类。 你无需修改实际客户端代码, 就能更改传递给客户端的工厂类, 也能更改客户端代码接收的产品变体。
生成器模式
- 能够分步骤创建复杂对象, 该模式允许你使用相同的创建代码生成不同类型和形式的对象;
- 应用场景:对于一个复杂对象, 在对其进行构造时需要对诸多成员变量和嵌套对象进行繁复的初始化工作,通常情况下, 绝大部分的参数都没有使用, 这使得对于构造函数的调用十分不简洁(如大部分参数不适用传入NULL等);
- 实现方式
- 将对象构造代码从产品类中抽取出来, 并将其放在一个名为生成器的独立对象中;
- 每次创建对象时, 你都需要通过生成器对象执行一系列步骤。 重点在于你无需调用所有步骤, 而只需调用创建特定对象配置所需的那些步骤即可;
- 可以进一步将用于创建产品的一系列生成器步骤调用抽取成为单独的主管类。 主管类可定义创建步骤的执行顺序, 而生成器则提供这些步骤的实现。
原型模式
- 使使用者能够复制已有对象, 而又无需使代码依赖它们所属的类;
- 实现方法:将克隆过程委派给被克隆的实际对象;即所有支持克隆的对象声明了一个通用接口, 该接口让你能够克隆对象, 同时又无需将代码和对象所属类耦合。 通常情况下, 这样的接口中仅包含一个克隆方法。
单例模式
- 保证一个类只有一个实例, 并提供一个访问该实例的全局节点;
- 实现方式:将默认构造函数设为私有;新建一个静态构建方法作为构造函数供外部调用,其中调用私有构造函数来创建对象, 并将其保存在一个静态成员变量中,对该函数当调用都将返回缓存的对象;
结构型模式
- 结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
适配器模式
- 使接口不兼容的对象能够相互合作;
桥接模式
组合模式
装饰模式
外观模式
享元模式
代理模式
行为模式
- 行为模式负责对象间的高效沟通和职责委派。