重温设计模式系列 --- 完整精华篇

这篇具有很好参考价值的文章主要介绍了重温设计模式系列 --- 完整精华篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

软件开发过程中,我们经常会遇到各种设计问题,例如如何管理对象之间的关系、如何优化代码的可复用性和可维护性等等。为了解决这些问题,我们可以使用设计模式。

设计模式是一种被广泛接受的软件设计思想,它提供了一套通用的解决方案,可以帮助我们更好地解决常见的软件设计问题。设计模式是从实践中总结出来的,它不仅可以提高代码的可读性和可维护性,还可以提高开发效率和代码的可复用性。

常见设计模式原则

设计模式有常见的五大原则 - SOLID

  • 单一职责原则(SRP)
  • 开放封闭原则(OCP)
  • 里氏替换原则(LSP)
  • 接口隔离原则(DIP)
  • 依赖倒置原则(ISP)

补充第六原则,迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP)

常见设计模式类型

  • 创建型模式:负责对象的创建和初始化,共有5种:工厂方法模式抽象工厂模式单例模式建造者模式原型模式
  • 结构型模式:负责对象的组合,共有7种:适配器模式装饰器模式代理模式外观模式桥接模式组合模式享元模式
  • 行为型模式:负责对象之间的通信,共有11种:观察者模式策略模式迭代器模式命令模式责任链模式模板方法模式访问者模式中介者模式解释器模式过滤器模式备忘录模式

目录

创建型模式

  1. 抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式是一种创建型设计模式,它提供了一种封装一组相关或相互依赖对象创建过程的方法,使得我们可以在不知道具体实现细节的情况下,创建一系列相互协作的对象。

  1. 工厂方法模式(Factory Method Pattern)

工厂方法模式是一种创建型设计模式,它提供了一种将对象的创建过程封装起来的方法,使得我们可以在不知道具体实现细节的情况下,创建各种不同类型的对象。

  1. 单例模式(Singleton Pattern)

单例模式是一种保证一个类只有一个实例的模式,它可以避免多个实例造成的资源浪费和对象的不一致性。单例模式通常使用一个私有的构造函数和一个静态的实例变量来实现。

  1. 建造者模式(Builder Pattern)

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式可以将复杂对象的构建过程抽象出来,从而使得系统更加灵活。

  1. 原型模式(Prototype Pattern)

用原型实例指定创建对象的种类,并通过复制这些原型创建新的对象。原型模式可以在运行时动态地创建对象,从而避免了静态工厂方法所带来的编译时耦合。

结构型模式

  1. 适配器模式(Adapter Pattern)

适配器模式是一种将一个类的接口转换成客户端所期望的另一种接口的模式,它可以让原本不兼容的类能够协同工作。这种模式可以避免因接口不匹配而导致的代码重构和重复开发。

  1. 装饰器模式(Decorator Pattern)

装饰器模式是一种在运行时动态地给对象添加新的功能的模式,它通过将对象包装在一个装饰器中来实现。这种模式可以避免使用继承带来的复杂性和静态特性,提高代码的灵活性和可扩展性。

  1. 代理模式(Proxy Pattern)

代理模式是一种结构型设计模式,它允许我们创建一个代理对象来控制对另一个对象的访问。代理对象可以充当原始对象的访问接口,从而控制对原始对象的访问。代理模式通常用于远程访问、延迟加载、访问控制等方面。

  1. 外观模式(Facade Pattern)

为一组复杂的子系统提供一个简单的接口,从而隐藏子系统的复杂性。外观模式可以降低客户端和子系统之间的耦合度,同时提高客户端的易用性。

  1. 桥接模式(Bridge Pattern)

桥接模式是一种将抽象部分与它的实现部分分离开来的模式,使它们可以独立地变化。这种模式可以避免因为实现细节的变化而导致的代码修改和重构。

  1. 组合模式(Composite Pattern)

组合模式是一种将对象组合成树形结构的模式,使得客户端可以像处理单个对象一样处理对象的组合。这种模式可以使得对象之间的关系更加清晰,提高代码的可读性和可维护性。

  1. 享元模式(Flyweight Pattern)

享元模式是一种结构型设计模式,用于优化对象的创建和使用。该模式通过共享相同的数据,来减少内存的使用和对象的创建。通常情况下,享元模式适用于存在大量相似对象的情况

行为型模式

  1. 观察者模式(Observer Pattern)

观察者模式是一种对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会收到通知并自动更新。这种模式可以降低对象之间的耦合度,提高系统的灵活性和可扩展性。

  1. 策略模式(Strategy Pattern)

策略模式是一种定义一系列算法的模式,它将每个算法封装在一个类中,并使它们可以互相替换。这种模式可以避免使用大量的条件语句和重复代码,提高代码的可维护性和可扩展性。

  1. 迭代器模式(Iterator Pattern)

迭代器模式是一种访问一个聚合对象中的各个元素的方式,而又不需要暴露该对象的内部表示。这种模式可以让客户端透明地访问聚合对象中的元素,同时避免了聚合对象的数据结构对客户端的依赖。

  1. 命令模式(Command Pattern)

将请求封装成对象,从而使不同的请求可以被不同的对象处理。命令模式可以将请求的发送者和接收者解耦,同时支持请求的撤销和重做

  1. 责任链模式(Chain of Responsibility Pattern)

将请求的发送者和接收者解耦,通过一条由多个处理对象组成的链来处理请求。责任链模式可以根据需求动态地组合处理对象,从而实现请求的自动转发和处理。

  1. 模板方法模式(Template Method Pattern)

定义一个操作中的算法骨架,将一些步骤延迟到子类中。模板方法模式可以提高代码的复用性和可维护性,同时可以避免子类中的代码重复

  1. 状态模式(State Pattern)

允许对象在内部状态发生改变时改变它的行为。状态模式将对象的行为和状态进行分离,从而将复杂的条件判断转化为简单的状态切换。

  1. 中介者模式(Mediator Pattern)

用一个中介对象来封装一系列的对象交互,从而使对象之间的交互松散耦合。中介者模式可以简化对象之间的交互,同时降低对象之间的依赖关系。

  1. 解释器模式(Interpreter Pattern)

给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。解释器模式可以将复杂的语言转化为易于处理的数据结构,从而使得语言的解释更加容易。

  1. 访问者模式(Visitor Pattern)

访问者模式是一种行为设计模式,它可以让你将算法与它们操作的对象分离。这样,你可以在不修改对象结构的情况下,向现有的对象结构添加新的操作。

  1. 备忘录模式(Memento Pattern)
    备忘录模式是一种行为型设计模式,它允许我们将对象的状态保存在备忘录对象中,从而可以在以后恢复对象的状态。该模式通常用于需要撤销、恢复操作的场景,例如文本编辑器、绘图应用等。备忘录模式通过将状态保存在备忘录对象中来实现状态的恢复,从而保证了对象的封装性和数据安全性。

参考资料

https://dofactory.com/net/abstract-factory-design-pattern

https://refactoring.guru/design-patterns文章来源地址https://www.toymoban.com/news/detail-549879.html

到了这里,关于重温设计模式系列 --- 完整精华篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 重温设计模式 --- 责任链模式

    责任链模式 是一种行为型设计模式,它通过一条由多个处理器组成的链来处理请求,每个处理器都有机会处理请求,如果一个处理器不能处理该请求,它会将请求传递给下一个处理器,直到请求被处理为止。 在实际应用中,责任链模式常用于处理请求的分发、事件处理等场

    2024年02月13日
    浏览(38)
  • 重温设计模式 --- 观察者模式

    观察者模式 是一种行为型设计模式,它允许对象之间建立一种一对多的关系,使得当一个对象状态改变时,所有依赖它的对象都能够自动得到通知并更新自己的状态。该模式可以帮助我们实现松耦合的系统,以便更好地应对变化和扩展。 在观察者模式中,有两个角色: 观察

    2024年02月13日
    浏览(56)
  • 设计模式精华版汇总

    以下是个人整理的设计模式汇总,将会持续更新工作和面试中经常用到的设计模式。 设计模式 - 装饰者模式:动态地为对象添加额外的功能 设计模式 - 代理模式:控制访问的设计模式 设计模式 - 门面模式:简化复杂系统的接口调用 设计模式 - 模板方法模式:优化代码复用与

    2024年02月15日
    浏览(31)
  • Gof23设计模式之单例模式(完整)

    单例模式(Singleton pattern)是Java中最简单的设计模式之一。这种设计模式属于创建型模型,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访

    2024年02月10日
    浏览(51)
  • 结构型设计模式之组合模式【设计模式系列】

    C++技能系列 Linux通信架构系列 C++高性能优化编程系列 深入理解软件架构设计系列 高级C++并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reali

    2024年02月15日
    浏览(45)
  • 结构型设计模式之代理模式【设计模式系列】

    C++技能系列 Linux通信架构系列 C++高性能优化编程系列 深入理解软件架构设计系列 高级C++并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reali

    2024年02月16日
    浏览(47)
  • 设计模式系列-外观模式

    一、上篇回顾 上篇我们主要讲述了创建型模式中的最后一个模式-原型模式,我们主要讲述了原型模式的几类实现方案,和原型模式的应用的场景和特点,原型模式 适合在哪些场景下使用呢?我们先来回顾一下我们上篇讲述的3个常用的场景。 1、我们在运行态的时候,动态的

    2024年02月09日
    浏览(34)
  • 设计模式系列-原型模式

    一、上篇回顾 上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每 个组成部分的详细创建步骤可以是动态的变化的,但是每个对象的组装的过程来说可能是相对固定的或者说是

    2024年02月09日
    浏览(43)
  • 行为型设计模式之观察者模式【设计模式系列】

    C++技能系列 Linux通信架构系列 C++高性能优化编程系列 深入理解软件架构设计系列 高级C++并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reali

    2024年02月15日
    浏览(42)
  • 设计模式系列-创建者模式

    一、上篇回顾 上篇我们主要讲述了抽象工厂模式和工厂模式。并且分析了该模式的应用场景和一些优缺点,并且给出了一些实现的思路和方案,我们现在来回顾一下: 抽象工厂模式:一个工厂负责所有类型对象的创建,支持无缝的新增新的类型对象的创建。这种情况是通过配

    2024年02月10日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包