设计模式_设计模式简介

前言

设计模式是针对软件设计中经常出现的问题,总结出来的一些通用的解决方案。它们是在很多项目中被证明是可行的,可以提高软件的可维护性、可扩展性和可重用性。设计模式不是具体的代码实现,而是一种思想和方法,可以帮助开发人员更好地组织和设计代码

常见的设计模式可分为三类

  • 创建型模式
  • 结构型模式
  • 行为型模式

创建型模式

创建型模式是设计模式中的一类,它主要用于处理对象的创建过程。在实际的开发中,我们经常需要创建对象,但是不同的对象创建过程可能不同,有些对象需要特定的条件才能创建,有些对象需要在运行时动态创建,有些对象需要复杂的初始化过程。创建型模式提供了一些通用的解决方案,可以帮助我们更好地处理对象的创建过程,提高代码的可维护性、可扩展性和可重用性

常见的创建型模式包括:

  • 简单工厂模式
    • 简单工厂模式是一种创建型模式,它提供了一个工厂类,根据传入的参数来创建不同的对象。简单工厂模式适用于对象类型较少且创建过程相对简单的情况
  • 工厂方法模式
    • 工厂方法模式是一种创建型模式,它将对象的创建委托给子类来完成。工厂方法模式适用于对象类型较多且创建过程比较复杂的情况
  • 抽象工厂模式
    • 抽象工厂模式是一种创建型模式,它提供了一个抽象工厂类和多个具体工厂类,每个具体工厂类可以创建一组相关的对象。抽象工厂模式适用于需要创建一组相关的对象。
  • 建造者模式
    • 建造者模式是一种创建型模式,它将一个复杂对象的构建过程分解成多个简单对象的构建过程,然后逐步构建复杂对象。建造者模式适用于需要创建复杂对象的情况
  • 原型模式
    • 原型模式是一种创建型模式,它通过复制已有对象来创建新对象。原型模式适用于对象创建过程较为复杂或耗时的情况
  • 单例模式
    • 单例模式是一种创建型模式,它保证一个类只有一个实例,并提供全局访问点。单例模式适用于需要确保全局唯一性的情况。

结构型模式

结构型模式是一种软件设计模式,用于描述如何将类或对象组合在一起形成更大的结构。这些模式描述了如何建立一个稳定的、高效的软件架构,使得系统的各个部分能够协同工作,从而更容易维护、扩展和重用

常见的结构型模式包括:

  • 适配器模式
    • 将一个类的接口转换为客户端希望的另外一个接口
  • 桥接模式
    • 将抽象部分与它的实现部分分离,使它们可以独立变化
  • 组合模式
    • 将对象组合成树形结构以表示"部分-整体"的层次结构
  • 装饰器模式
    • 动态地给一个对象添加一些额外的职责,同时又不改变其结构
  • 外观模式
    • 为子系统中的一组接口提供一个统一的接口
  • 享元模式
    • 运用共享技术有效地支持大量细粒度对象
  • 代理模式
    • 为其他对象提供一种代理以控制对这个对象的访问

结构型模式下的设计模式都有一个共同点,就是通过组合类或对象来实现更大的结构,从而达到更好的代码重用、可维护性和可扩展性


行为型模式

行为型模式是设计模式中的一类模式,主要关注对象间的交互和通信过程,着重于描述一组响应特定事件或情况的对象之间的通信方式

常见的行为型模式包括:

  • 观察者模式
    • 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象,当主体对象状态改变时,所有依赖于它的观察者都会得到通知并自动更新
  • 迭代器模式
    • 提供一种方法访问容器对象中各个元素,而不需暴露该对象的内部细节
  • 模板方法模式
    • 定义一个算法的骨架,将一些步骤延迟至子类中来实现,从而使得子类能够在不改变算法结构的情况下,重新定义该算法的某些特定步骤
  • 命令模式
    • 将请求封装成对象,从而允许使用不同的请求、队列或者日志请求来参数化其他对象,属于对象行为型模式
  • 策略模式
    • 定义一系列的算法,将每一个算法封装起来,并让它们可以互换,属于对象行为型模式
  • 职责链模式
    • 将请求从链上的一个对象传递到另一个对象,直到能够处理为止
  • 解释器模式
    • 定义一个语言的文法,以及用来解释文法的解释器,用于解释一些固定格式的表达式或语句
  • 访问者模式
    • 在不改变各元素类的前提下,定义作用于这些元素的新操作,即Visitor模式,将数据结构与数据操作分离
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值