首页 > 其他分享 >重温设计模式 --- 前篇

重温设计模式 --- 前篇

时间:2023-07-12 14:47:36浏览次数:37  
标签:前篇 对象 Pattern 可以 模式 --- 创建 设计模式

引言

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

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

常见设计模式原则

设计模式有常见的五大原则 - 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

标签:前篇,对象,Pattern,可以,模式,---,创建,设计模式
From: https://www.cnblogs.com/pandefu/p/17536313.html

相关文章

  • Spring-Boot-19-Junit测试
    随着Spring开发的深入,我们逐渐打算使用Spring-test与Junit结合进行开发测试1.Jar形式的Maven依赖<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dep......
  • 商务智能-第五章 多维建模
    Lecture5-DimensionalModeling多维建模1.维度建模中的基本概念事实表维度表事实与维度的融合星型模型雪花模型数据立方体1.1.事实表事实表是维度建模的核心和基本表每一事实表都对应着一个或若干个"度量值"度量值是事实表的核心,也是趋势分析的对象通过事实表来记录维度......
  • 计算机操作系统-2-处理器管理
    Lecture2-处理器管理处理器管理是操作系统的重要组成部分处理器负责管理、调度和分配计算机系统的重要资源,并控制程序执行处理器管理中最重要的是处理器调度,即进程调度,也就是控制、协调进程对处理器的竞争。进程与线程进程是资源分配和管理的单位线程是处理器调度的基本单......
  • 软件工程与计算II-24-考试总结
    summary1.软件工程应用系统的、规范的、可量化的方法来开发、运行和维护软件,即将工程应用到软件。对1)中各种方法的研究。2.五十年代到00年代的特点1950s:科学计算;以机器为中心进行编程;像生产硬件一样生产软件。1960s:业务应用(批量数据处理和事物计算);软件不同于硬件;用软件工艺的......
  • 直播网站源码,修改el-table滚动条样式
    直播网站源码,修改el-table滚动条样式原生滚动条修改方式: /*---滚动条公共样式---*/ /*定义滚动条高宽及背景高宽分别对应横竖滚动条的尺寸*/::-webkit-scrollbar{ width:8px; height:8px;} /*定义滚动条轨道内阴影+圆角*/::-webkit-scrollbar-track{ -webkit-......
  • HHHOJ #1238. 「NOIP 2023 模拟赛 20230712 D」但战斗还未结束 思考--zhengjun
    赛时想写60pts,结果cxr似乎少算了一点空间,导致我一直没把空间卡过去QWQ。当时不会dfs求拓扑序,这里讲一下。枚举所有非访问过的点依次dfs,每次进行下列操作:找出\(v\)的一个未访问过的入点\(u\),调用dfs(u);找不到\(u\)的时候,把\(v\)加入拓扑序列中。代码#inc......
  • 【雕爷学编程】Arduino动手做(117)---P10V706LED屏模组4
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • JAVA设计模式之适配器模式
    设计模式设计模式(DesignPattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、......
  • 【雕爷学编程】Arduino动手做(117)---P10V706LED屏模组3
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • PolarDB-PG TPC-C 测试
    在本节中,我们将学习如何对PolarDB-PG进行TPCC测试,本次实践将基于单机本地存储来运行。TPC-C测试TPC-C是一种衡量OLTP性能的基准测试。TPC-C混合了五种不同类型和复杂程度的并发交易,这五种并发交易又包括了在线执行以及排队延迟执行。TPC-C数据库由九种类型的表组成,以......