前言
设计模式是为面对象编程思想服务的一种工具。
它是软件工程师们基于面对象编程的概念体系(类、对象、继承、多态…),结合实际工程应用,总结出的一套编程原则和代码模式(模版)。
这套原则和模版,能帮助新手软件工程师们更快地写出易扩展、好维护的代码。
本文主要介绍了以下内容:

设计模式原则
单一职责原则
别名:单一功能原则
一个类只用来完成一项工作,对于这个类对实体,尽量保证只有一个引起它变化的因素。
以提内聚性来减少引起变化对因素,从而降低耦合度。
开放封闭原则
对象或实体应该对扩展开放,对修改封闭。
对扩展开放:一旦有新需求,原有类应该很容易扩展出新方法。
对修改封闭:已经设计完成的类可以独立完成其工作,不需要大的修改。
通过对抽象类继承,和多态重写机制来实现开放封闭原则。
里氏(Liskov)替换原则
在对象x为类型T时q(x)成立。那么S为T的子类时,当y的类型为S那么q(y)也成立。
即:对父类的调用对子类同样成立。子类或者派生类必然可以替换它们的父类或基类,但反之不一定成立。
Liskov替换原则是关于继承机制的设计原则,违反类Liskov设计原则就必然违反开放封闭原则
接口隔离原则
不应该强迫客户端实现一个它们用不上的接口。
核心思想:实现多个小而专的接口,不要实现大的总接口。多重继承体现类接口隔离原则。
依赖倒置原则
实体必须依赖抽象而不是具体实现。高层次的模块不应该依赖低层次的模块,它们都应该依赖于抽象。
当两个模块之间存在紧密的耦合关系时,最好的方法就是分离接口和实现:在依赖之间定义一个抽象的接口使得高层模块调用接口,而底层模块实现接口的定义,以此来有效控制耦合关系,达到依赖于抽象的设计目标。
其他原则
合成复用原则
合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简言之:要尽量使用组合/聚合关系,少用继承。
迪米特法则
一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
这样减少修改实体时对其他实体造成的影响。
创建型模型
对类实例化的过程进行抽象,将软件模块中创建对象和使用对象分离,外界只知道使用对象的接口,使得整个系统更符合单一职责原则。
简单工厂模式 (Simple Factory)
别名:静态工厂方法 (Static Factory Method)
工厂方法模式
别名:工厂模式、虚拟构造器模式、多态工厂模式。
父类负责定义创建产品对象对公共接口,子类工厂负责生产具体对产品对象。
抽象工厂模式
别名:kit模式,对象创建型模式
建造者模式
单例模式
别名:单件模式、单态模式
结构型模式
结构型模式描述如何将类和对象结合在一起,从而形成更复杂,功能更强大的结构。
结构型模式可以分为:类结构型模式和对象型结构模式。
类结构型模式:
关心类的组合,由多个类组合成更大的系统。
对象型结构模式 :
关心类与对象的组合,通过关联关系使得一个类中定义另一个类的实例对象,然后通过该对象调用类方法。
根据合成复用原则,在系统中应该尽量使用关联关系替代继承关系,因此大部分结构模式都是对象型结构模式。
适配器模式
用于接口转换
对象适配器
类适配器
3.桥接模式
别名:柄体模式、接口模式
是一种对象结构型模式,将继承关系转换成关联关系
装饰器模式
别名:油漆工模式,是一种对象结构模型
外观模式
享元模式
别名:轻量级模式,对象结构型模式
代理模式
别名:对象结构型模式
代理一般和权限控制相关。
行为模式
行为模式:类行为模式、对象行为模式
命令模式
ref2 // 🤔:使用命令模式设计编辑器的撤销保存
ref3 // 命令模式的备忘录功能
别名: 事务模式、动作模式
将行为请求者和行为实现者进行解耦,适用于一些需要对行为进行记录撤销的场景。
中介者模式
别名:调停者模式
观察者模式
别名:发布订阅模式、模型视图模式、源监听模式、从属者模式
状态模式
别名:状态对象
策略模式
别名:也称为政策模式