前言
设计模式是针对软件设计中经常出现的问题,总结出来的一些通用的解决方案。它们是在很多项目中被证明是可行的,可以提高软件的可维护性、可扩展性和可重用性。设计模式不是具体的代码实现,而是一种思想和方法,可以帮助开发人员更好地组织和设计代码
常见的设计模式可分为三类
- 创建型模式
- 结构型模式
- 行为型模式
创建型模式
创建型模式是设计模式中的一类,它主要用于处理对象的创建过程。在实际的开发中,我们经常需要创建对象,但是不同的对象创建过程可能不同,有些对象需要特定的条件才能创建,有些对象需要在运行时动态创建,有些对象需要复杂的初始化过程。创建型模式提供了一些通用的解决方案,可以帮助我们更好地处理对象的创建过程,提高代码的可维护性、可扩展性和可重用性
常见的创建型模式包括:
- 简单工厂模式
- 简单工厂模式是一种创建型模式,它提供了一个工厂类,根据传入的参数来创建不同的对象。简单工厂模式适用于对象类型较少且创建过程相对简单的情况
- 工厂方法模式
- 工厂方法模式是一种创建型模式,它将对象的创建委托给子类来完成。工厂方法模式适用于对象类型较多且创建过程比较复杂的情况
- 抽象工厂模式
- 抽象工厂模式是一种创建型模式,它提供了一个抽象工厂类和多个具体工厂类,每个具体工厂类可以创建一组相关的对象。抽象工厂模式适用于需要创建一组相关的对象。
- 建造者模式
- 建造者模式是一种创建型模式,它将一个复杂对象的构建过程分解成多个简单对象的构建过程,然后逐步构建复杂对象。建造者模式适用于需要创建复杂对象的情况
- 原型模式
- 原型模式是一种创建型模式,它通过复制已有对象来创建新对象。原型模式适用于对象创建过程较为复杂或耗时的情况
- 单例模式
- 单例模式是一种创建型模式,它保证一个类只有一个实例,并提供全局访问点。单例模式适用于需要确保全局唯一性的情况。
结构型模式
结构型模式是一种软件设计模式,用于描述如何将类或对象组合在一起形成更大的结构。这些模式描述了如何建立一个稳定的、高效的软件架构,使得系统的各个部分能够协同工作,从而更容易维护、扩展和重用
常见的结构型模式包括:
- 适配器模式
- 将一个类的接口转换为客户端希望的另外一个接口
- 桥接模式
- 将抽象部分与它的实现部分分离,使它们可以独立变化
- 组合模式
- 将对象组合成树形结构以表示"部分-整体"的层次结构
- 装饰器模式
- 动态地给一个对象添加一些额外的职责,同时又不改变其结构
- 外观模式
- 为子系统中的一组接口提供一个统一的接口
- 享元模式
- 运用共享技术有效地支持大量细粒度对象
- 代理模式
- 为其他对象提供一种代理以控制对这个对象的访问
结构型模式下的设计模式都有一个共同点,就是通过组合类或对象来实现更大的结构,从而达到更好的代码重用、可维护性和可扩展性
行为型模式
行为型模式是设计模式中的一类模式,主要关注对象间的交互和通信过程,着重于描述一组响应特定事件或情况的对象之间的通信方式
常见的行为型模式包括:
- 观察者模式
- 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象,当主体对象状态改变时,所有依赖于它的观察者都会得到通知并自动更新
- 迭代器模式
- 提供一种方法访问容器对象中各个元素,而不需暴露该对象的内部细节
- 模板方法模式
- 定义一个算法的骨架,将一些步骤延迟至子类中来实现,从而使得子类能够在不改变算法结构的情况下,重新定义该算法的某些特定步骤
- 命令模式
- 将请求封装成对象,从而允许使用不同的请求、队列或者日志请求来参数化其他对象,属于对象行为型模式
- 策略模式
- 定义一系列的算法,将每一个算法封装起来,并让它们可以互换,属于对象行为型模式
- 职责链模式
- 将请求从链上的一个对象传递到另一个对象,直到能够处理为止
- 解释器模式
- 定义一个语言的文法,以及用来解释文法的解释器,用于解释一些固定格式的表达式或语句
- 访问者模式
- 在不改变各元素类的前提下,定义作用于这些元素的新操作,即Visitor模式,将数据结构与数据操作分离