设计模式是软件工程中的一种通用解决方案,它们被设计用来解决在软件设计过程中会经常遇到的一些问题。根据设计模式的使用方式和目的,可以将它们分为三大分类:创建型设计模式、结构型设计模式和行为型设计模式。
创建型设计模式
创建型设计模式主要用于对象的创建和实例化,它们为代码提供了更加灵活的实例化方式,可以帮助我们尽可能地降低代码之间的耦合度。
单例模式
单例模式被设计用于确保类只能被实例化一次,确保全局只有一个实例对象。
工厂模式
工厂模式为对象的创建提供了一个工厂方法,这个方法关注的是对象的创建过程,而不是对象本身。
抽象工厂模式
抽象工厂模式为对象的创建提供了一组工厂方法,每个工厂方法关注的是一组相互关联的对象的创建过程。
建造者模式
建造者模式为对象的创建提供了一种更加灵活的方式,它将对象的创建过程分解为若干个步骤,可以按照需要组合这些步骤,创建不同的对象。
原型模式
原型模式通过复制已有的对象来创建新的对象,这个过程是通过对象的克隆来实现的。
结构型设计模式
结构型设计模式主要用于处理对象之间的关系,它们通过定义对象之间的关系,来降低代码之间的耦合度。
适配器模式
适配器模式用于将一个类的接口转换成客户希望的另外一个接口。
桥接模式
桥接模式将抽象部分与它的实现部分分离开来,从而使它们可以独立地变化。
组合模式
组合模式将对象组合成树形结构来表示“整体-部分”的层次结构,可以更加方便地处理复杂的对象结构。
装饰器模式
装饰器模式为对象动态地添加额外的功能,可以在不改变对象原有功能的基础上,为它们添加新的功能。
外观模式
外观模式为对象提供了一个统一的接口,用于访问子系统中的一组接口。
享元模式
享元模式通过共享相同的状态,来减少对象的数量,从而降低内存的使用和对象的创建和销毁的开销。
代理模式
代理模式为对象提供了一个代理,用于控制对这个对象的访问。
行为型设计模式
行为型设计模式主要用于控制对象之间的交互方式,它们通过定义对象之间的协作方式,来降低代码之间的耦合度。
职责链模式
职责链模式将请求和处理解耦,可以建立一个链式结构,将多个处理对象组成一条链,由这些对象依次处理请求。
命令模式
命令模式将请求封装成命令对象,从而可以将命令对象作为参数传递、存储、调用和操作。
解释器模式
解释器模式定义了一种语言,用于处理特定的问题域。
迭代器模式
迭代器模式为遍历集合提供了一种统一的接口,可以使用相同的代码对不同类型的集合进行遍历。
中介者模式
中介者模式通过封装对象之间的交互,来降低这些对象之间的耦合度。
备忘录模式
备忘录模式用于实现将对象状态保存到外部,并在需要时将对象恢复到之前的状态。
观察者模式
观察者模式定义了一种对象之间发布-订阅的机制,即发布者发布事件,订阅者订阅事件,并在事件被发布后得到通知。
状态模式
状态模式将对象的行为和它的状态分离开来,从而让对象在不同的状态下具有不同的行为。
策略模式
策略模式定义了一系列算法,将它们封装成对象,并使它们可以相互替换使用。
模板方法模式
模板方法模式定义了一种算法的骨架,将一些步骤延迟到子类中去实现。
访问者模式
访问者模式提供了一种灵活的方式来增强现有的对象结构,而不必对其进行修改。