2023-6-9-一天一种设计模式

简介: 2023-6-9-一天一种设计模式

😉一、如何理解设计模式

设计模式是一种被广泛应用于软件开发的编程思想,它提供了一套通用的解决方案来解决各种常见的设计问题。在软件开发中,为了提高代码的可重用性、灵活性和可维护性,我们经常会遇到各种设计问题。这些问题可能涉及到对象之间如何协作、如何处理变化、如何管理状态等方面。

设计模式通过抽象出这些常见的问题,并提供了一套通用的解决方案,帮助我们更好地组织代码、降低耦合度、提高代码可读性和易扩展性。使用设计模式可以减少代码重复、提高代码可维护性、降低系统的复杂度以及使代码更加清晰易懂。

同时,设计模式也可以提高团队间的沟通效率,因为设计模式是一种公认的方式,可以让不同的开发者之间更容易地交流和理解。在软件行业中,设计模式已成为一种非常重要的编程思想,不仅有助于提高软件质量,也可以提高开发效率,缩短项目周期。


🐱‍🐉二、设计模式的分类

常见的设计模式一共有23种,根据目的和范围不同可以分为三类:

  1. 创建型模式(5种):用于创建对象的模式,包括工厂方法模式、抽象工厂模式、单例模式、建造者模式和原型模式。
  2. 结构型模式(7种):用于处理类或对象之间的组合关系,包括适配器模式、桥接模式、装饰器模式、外观模式、享元模式、代理模式和组合模式。
  3. 行为型模式(11种):用于描述对象之间的通信方式和协作方式,包括模板方法模式、策略模式、命令模式、职责链模式、状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式和解释器模式。

除了这些常见的设计模式之外,还有一些其他的模式,如并发模式、架构模式等。


🎉三、创建型模式的目的

创建型模式是一类软件设计模式,其主要目的是处理对象的创建过程,旨在提供一种有效的方式来创建对象,以及管理对象的创建和生命周期。创建型模式通常应用于需要灵活地管理对象的场景,从而可以减少代码重复、提高代码可维护性、降低系统复杂度等方面提供帮助。

具体而言,创建型模式的目的包括以下几个方面:

  1. 将对象的创建和使用分离:通过将对象的创建和使用分离,可以降低类之间的耦合度,从而提高系统的灵活性和可维护性。
  2. 隐藏对象创建的复杂性:有些对象的创建过程可能非常复杂,或者涉及到很多不同的类和组件。使用创建型模式可以隐藏这些实现细节,让客户端程序更加简单明了。
  3. 提供一种可扩展的创建机制:在软件开发过程中,对象的创建方式可能会随着需求的变化而频繁改变。使用创建型模式可以提供一种可扩展的创建机制,以便在不修改原有代码的情况下轻松地添加新的对象类型。
  4. 支持对象的复用:有些对象可能被多个客户端程序所共享,如果每次都重新创建对象会浪费系统资源。使用创建型模式可以支持对象的复用,从而提高系统的性能和效率。

🐱‍🚀四、结构型模式的目的

结构型模式是一类软件设计模式,其主要目的是处理类和对象之间的组合关系,旨在提供一种有效的方式来实现类和对象的组合,以及管理它们之间的关系。结构型模式通常应用于需要灵活地实现对象之间的组合关系场景,从而可以减少代码重复、提高代码可维护性、降低系统复杂度等方面提供帮助。

具体而言,结构型模式的目的包括以下几个方面:

  1. 将对象和类组合成较大的结构:通过将对象和类组合成较大的结构,可以提高系统的灵活性和可维护性,并且使程序更加易读易懂。
  2. 隐藏系统中各个部分的实现细节:有些系统由很多不同的对象和类组成,这些对象和类的实现细节可能非常复杂,使用结构型模式可以隐藏这些实现细节,让客户端程序更加简单明了。
  3. 便于对系统进行扩展:在软件开发过程中,系统的需求可能会频繁变化,使用结构型模式可以提供一种可扩展的框架,使得系统更容易进行扩展和升级。
  4. 实现对象的复用:有些对象可能被多个客户端程序所共享,如果每次都重新创建对象会浪费系统资源。使用结构型模式可以支持对象的复用,从而提高系统的性能和效率。

🎂五、行为型模式的目的

行为型模式是一类软件设计模式,其主要目的是处理对象之间的通信方式和协作方式,旨在提供一种有效的方式来实现对象之间的通信和协作,以及管理它们之间的关系。行为型模式通常应用于需要灵活地实现对象之间的通信和协作场景,从而可以减少代码重复、提高代码可维护性、降低系统复杂度等方面提供帮助。

具体而言,行为型模式的目的包括以下几个方面:

  1. 将算法和对象的职责分离开来:有些算法可能需要被多个对象所共享,使用行为型模式可以将算法从对象中分离出来,从而提高代码的可重用性和灵活性。
  2. 管理对象之间的协作方式:在软件系统中,对象之间的协作非常重要,使用行为型模式可以提供一种规范的方式来管理对象之间的协作方式,使得程序更加易读易懂。
  3. 支持程序的动态扩展:在软件开发过程中,系统的需求可能会频繁变化,使用行为型模式可以提供一种可扩展的框架,使得系统更容易进行扩展和升级。
  4. 提供一种灵活的控制机制:行为型模式提供了一种灵活的控制机制,可以让程序动态地改变对象之间的交互方式,从而让系统更加具有弹性和可扩展性。

🥩六、设计模式的用于不用

设计模式并非万能的解决方案,应该根据实际情况来考虑是否使用它们。以下是一些关于何时使用和不使用设计模式的建议:

什么时候使用设计模式?

  1. 当面临一个已知的问题,并且已经有了经过验证的解决方案,可以考虑使用相应的设计模式。
  2. 当需要处理复杂的问题时,设计模式可以帮助提供一种可重用、灵活和可扩展的解决方案。
  3. 当需要与其他程序员共同开发一项任务,并且需要一种公认的方式来组织代码时,设计模式可以提供一种标准化的解决方案。
  4. 当需要创建大规模的应用程序时,设计模式可以帮助简化代码并提高代码质量。

什么时候不使用设计模式?

  1. 当问题太简单,使用设计模式反而会增加复杂性和难度。
  2. 当团队中没有人熟悉或理解特定的设计模式,使用它们可能会导致出现错误或产生额外的成本。
  3. 当代码需要与其他系统集成时,使用设计模式可能会对性能产生负面影响。
  4. 当需要快速原型开发时,使用设计模式可能会增加开发周期。

使用设计模式需要基于具体情况进行考虑,需要评估其是否有助于解决问题并提高代码质量,同时也需要注意不要滥用设计模式,应该选择适当的模式来解决实际问题。


🍚七、如何选择使用哪种设计模式

选择使用哪种设计模式需要考虑多个因素,包括问题的性质、系统的要求和开发人员的经验等。以下是一些选择设计模式的建议:

  1. 了解不同类型的设计模式:首先,需要了解各种不同类型的设计模式,例如创建型模式、结构型模式和行为型模式。熟悉各个模式的定义、工作原理和应用场景等方面的知识,可以帮助你更好地进行选择。
  2. 确定问题的性质:在选择设计模式时,需要考虑所面临的问题的性质。例如,如果需要创建对象并确保只有一个实例,则可以考虑使用单例模式。如果需要创建对象的过程很复杂,则可以考虑使用工厂模式。
  3. 确定系统的要求:在选择设计模式时,还需要考虑系统的要求。例如,如果系统需要支持插件化架构,则可以考虑使用桥接模式或装饰器模式。如果系统需要支持动态更新,则可以考虑使用观察者模式
  4. 考虑开发人员的经验:在选择设计模式时,需要考虑开发团队的经验水平。如果团队中有较多经验丰富的开发人员,则可以考虑使用更高级别的设计模式。如果团队中的开发人员经验较少,则可以使用更简单的设计模式。
  5. 尽可能地遵循设计原则:在选择设计模式时,需要尽可能地遵循面向对象设计的原则。例如,尽可能地让类和对象之间的耦合度降低,尽可能地保持代码的易扩展性、可重用性和可维护性等。

🥠八、其他设计模式

除了23种常见的设计模式,还有其他一些设计模式:

  1. 服务定位器模式(Service Locator Pattern):通过中央注册表来管理服务的提供和访问。
  2. 数据访问对象模式(Data Access Object Pattern):将数据源抽象出来,并提供一组标准的接口来访问这些数据。
  3. 远程代理模式(Remote Proxy Pattern):在客户端和远程资源之间引入一个代理对象,以便于客户端对远程资源的访问。
  4. 空对象模式(Null Object Pattern):使用一个默认的“空对象”来替代“null”,以避免出现空指针异常等问题。
  5. 责任链模式(Chain of Responsibility Pattern):将请求沿着一个链传递,直到某个对象能够处理它。
  6. 访问者模式(Visitor Pattern):将算法与对象结构分离开来,使得算法可以独立变化。
  7. 解释器模式(Interpreter Pattern):定义一种语言,并实现该语言的解释器。
  8. 模板方法模式(Template Method Pattern):定义一个算法框架,将一些步骤延迟到子类实现。
  9. 并发模式(Concurrency Patterns):用于处理多线程和并发编程相关的问题的设计模式。

🍤九、程序员的使命是什么

程序员的使命是为人类创造价值,通过编写高质量的代码和开发先进的技术来改善人类的生活和工作环境,为社会做出积极的贡献。


🍳参考文献

🧊文章总结

提示:这里对文章进行总结:

  本文讲了关于设计模式的一些知识,希望大家学习完有所收获。



目录
相关文章
|
4月前
|
设计模式 开发框架 前端开发
设计模式一
设计模式是面向对象编程的实践经验,旨在解决一系列问题,促进软件的可升级和维护。它分为创建型(如工厂、单例模式)、结构型(适配器、装饰器模式等)和行为型(观察者、策略模式等)三大类。J2EE模式关注表示层,包括MVC模式等。设计模式的七大原则包括里氏替换、依赖倒置、开闭原则、单一职责、接口隔离、迪米特原则和合成复用原则,这些原则有助于减少耦合和提高代码可读性。接口作为契约和层间对接工具,约束类型行为并允许实现多继承。
|
5月前
|
设计模式 自动驾驶 NoSQL
设计模式总结(一)
设计模式总结(一)
|
12月前
|
设计模式 安全
设计模式介绍
设计模式介绍
38 0
|
设计模式
设计模式——里氏替换
设计模式——里氏替换
|
设计模式
|
设计模式 存储 NoSQL
为什么我们需要设计模式?
设计模式解决什么问题设计模式一直被认为是一门难以学习的课程。究其原因是因为我们不清楚设计模式在解决哪些问题方面发挥作用。简言之,设计是为了实现特定的目标,基于不断更新的局部知识来获得解决方案的过程。我们通常熟悉的范式是在几乎掌握所有知识的情况下解决问题,例如解数学题、物理题等。然而,在软件编程过程中,我们掌握的知识往往不充分,而且会不断更新,因此需要我们关注有哪些知识,没有哪些知识,可以获取哪些知
9323 1
|
设计模式 消息中间件 Java
一起来学设计模式之认识设计模式
前言 目前正在出一个设计模式专题系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~ 本节给大家讲一下设计模式基本概念,它的基本原则以及有哪些设计模式~ 本专题的所有案例代码主要以Java语言为主, 好了, 废话不多说直接开整吧~ 设计模式初识 设计模式是一种经过验证的、被广泛应用的解决特定问题的软件设计方案,它提供了一种在软件设计中反复使用的解决方案。设计模式通常描述了一个问题的情境、解决方案和解决方案的优点和缺点。设计模式不是一种具体的编程语言特性或库,而是一种通用的设计思想和方法。
|
设计模式 算法 安全
11种常用的设计模式
有这么一个很形象的比喻,把写代码比作是建房子,代码比作是砖瓦、一个完整的系统就好比是一栋高楼大厦、程序员无疑就好比是建(ban)筑(zhuan)工,这些很表面的东西我们都可以很形象深刻的理解,其实要设计和开发一个系统远远不只这些东西,深挖表象之下隐藏着的细节往往才是灵魂所在,诸如:算法和数据结构、框架、设计模式等,设计模式是一个虚幻的抽象的概念,好比建造房子时的设计理念方案一样,一个软件系统扩展性、可维护性以及稳定健壮性如何,很大程度上取决于设计模式。
116 0
11种常用的设计模式
|
设计模式 数据可视化 程序员
设计模式(一)
设计模式
117 0
|
存储 设计模式 缓存
设计模式(五)
设计模式
116 0