首页 > 其他分享 >一文带你简单入门了解设计模式

一文带你简单入门了解设计模式

时间:2024-05-17 21:19:45浏览次数:21  
标签:入门 对象 创建 模式 一个 抽象 设计模式 一文

什么是设计模式

设计模式是在软件开发中,经过实践总结出来的可重复使用的、针对特定问题的解决方案的模板。它对软件设计中常见的问题进行了抽象和概括,提供了一种标准化的设计思路和方法,以提高软件的质量、可维护性、可扩展性和可复用性。简单来说,设计模式是一种编程中的经验总结和最佳实践

设计模式的优点

  • 提高代码质量:使代码结构更加清晰、合理和健壮。
  • 增强可读性和可理解性:遵循特定模式的代码更容易被其他人理解和掌握。
  • 促进代码复用:减少重复代码的编写,提高开发效率。
  • 提高系统的灵活性和可扩展性:可以方便地进行功能扩展和修改,而对其他部分影响较小。
  • 增强系统的稳定性:经过实践验证的模式有助于避免一些常见的错误和问题。
  • 便于团队协作:团队成员对设计模式有共同的认知,便于沟通和协作。
  • 提升软件的可维护性:使代码更易于维护和更新。

设计模式的六大原则

  1. 单一职责原则:一个类应该只有一个引起它变化的原因,即一个类只负责一项职责。
  2. 开放-封闭原则:软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。
  3. 里氏替换原则:在任何使用父类的地方都可以用其子类来替换。
  4. 依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。
  5. 接口隔离原则:客户端不应该被迫依赖于它不使用的接口。
  6. 迪米特法则:一个对象应该对其他对象保持最少的了解。

设计模式的三种类型

创建型模式

创建型模式是设计模式中的一类,它主要关注对象的创建机制
创建型模式的核心在于将对象的创建过程进行抽象和封装,使得系统在创建对象时更加灵活、高效且可维护。这些模式提供了不同的方式来实例化对象,以适应各种不同的场景和需求。 它们可以帮助解决对象创建过程中的一些常见问题,比如如何避免对象创建的代码重复、如何根据不同的条件创建不同类型的对象、如何更好地控制对象创建的细节和时机等。通过使用创建型模式,能够使软件的架构更加清晰合理,提高代码的可扩展性和可复用性。常见的创建型模式包括单例模式、工厂模式、抽象工厂模式、原型模式、建造者模式等。
记忆口诀:创原工抽建单(创员工抽检单
解释:创(创建型模式)原(原型模式)工(工厂模式)抽(抽象工厂模式)建(建造者模式)单(单例模式)

创建型模式 描述
单例模式 确保一个类只有一个实例,并提供一个全局访问点。
工厂模式 定义一个用于创建对象的接口,让子类决定实例化哪一个类
抽象工厂模式 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
原型模式 将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例
建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,可简单理解为对复杂 对象进行分模块构建

结构型模式

结构型模式是设计模式的一类,主要关注如何将不同的类和对象组合成更大的结构,以实现特定的功能和架构。 它侧重于处理类和对象之间的组合关系,通过合理的结构设计来增强系统的灵活性、可扩展性和可维护性。这些模式帮助解决在构建复杂系统时,不同组件之间如何更好地协同工作、如何构建更清晰合理的层次结构等问题。 例如,适配器模式解决了不兼容接口之间的适配问题;组合模式构建了层次化的组合结构;桥接模式分离了抽象与实现等。结构型模式使得系统在面对变化和扩展时,能够更从容地进行调整和重构,保持系统的稳定性和健壮性
记忆口诀:结享桥装,适代外组(姐想乔装,试戴崴足
解释:结(结构型模式)享(享元模式)桥(桥接模式)装(装饰器模式),适(适配器模式)代(代理模式)外(外观模式)组(组合模式)

结构型模式 描述
适配器模式 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,将一个类的接口转换成客户希望的另外一个接口
桥接模式 抽象部分与它的实现部分分离,使它们都可以独立地变化
组合模式 将对象组合成树形结构以表示“部分-整体”的层次结构。
装饰器模式 动态地给一个对象添加一些额外的职责
外观模式 为复杂的子系统提供一个简单统一的接口,隐藏了子系统内部的复杂性,让客户端与子系统的交互变得更简单和直接
享元模式 运用共享技术有效地支持大量细粒度的对象
代理模式 为其他对象提供一种代理控制对这个对象的访问,从而限制、增强或修改该对象的一些特性

行为型模式

行为型模式是设计模式中的一类,主要关注对象之间的交互和职责分配
行为型模式侧重于描述对象在运行时的行为以及它们之间如何协作、通信和完成特定任务。这些模式帮助解决在复杂系统中对象之间的动态交互问题,使得系统的行为更加灵活、可扩展和易于理解。 常见的行为型模式包括策略模式、模板方法模式、观察者模式、迭代器模式、命令模式、状态模式、中介者模式、备忘录模式、责任链模式、解释器模式、访问者模式等。它们通过定义明确的行为规则和交互方式,来优化系统中对象的行为表现,提高系统的整体质量和可维护性。
记忆口诀:行责命迭状中,备解观策模访(行者鸣笛撞钟,八戒观测模仿
解释:行(行为型模式)责(责任链模式)命(命令模式)迭(迭代器模式)状(状态模式)中(中介者模式)备(备忘录模式)解(解释器模式)观(观察者模式)策(策略模式)模(模板方法模式)访(访问者模式)

行为型模式 描述
策略模式 定义一系列算法,将每个算法封装起来,并让它们可以相互替换同一功能的不同实现
模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤
观察者模式 定义对象间的一种一对多的依赖关系,当一个对象状态发生改变时,所有依赖它的对象都得到通知并自动更新,常见的是:发布-订阅
迭代器模式 提供一种方法顺序访问(遍历)一个聚合对象中各个元素,而又不需暴露该对象的内部表示
命令模式 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作
状态模式 允许一个对象在其内部状态改变时改变它的行为,常见场景为:一个对象的行为取决于它的状态
备忘录模式 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复到这一状态,撤销-恢复
中介者模式 定义一个中介对象简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解
解释器模式 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
责任链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止
访问者模式 在不改变数据结构元素的前提下,为一个数据结构中的每个元素提供多种访问方式

标签:入门,对象,创建,模式,一个,抽象,设计模式,一文
From: https://www.cnblogs.com/nanshuo0814/p/18198721

相关文章

  • LuckFox-pico 入门记录一:编译环境与GPIO
    LuckFoxRV1106点灯本文使用VMwave+ubuntu20.04虚拟机,并用CLion开发linux,简单记录一下配置过程;1虚拟机安装拿到板子,首先是配置环境,虚拟机选择ubuntu20.04,安装教程随便搜一下就行,网络配置选择NAT就行,可以不选择桥接模式,其他没有什么注意事项。比较难的一点是samba共享文件夹......
  • P1683 入门
    传送锚点:https://www.luogu.com.cn/problem/P1683题目描述不是任何人都可以进入桃花岛的,黄药师最讨厌像郭靖一样呆头呆脑的人。所以,他在桃花岛的唯一入口处修了一条小路,这条小路全部用正方形瓷砖铺设而成。有的瓷砖可以踩,我们认为是安全的,而有的瓷砖一踩上去就会有喷出要命的毒......
  • vuejs3.0 从入门到精通——vite+vue3+ts 显示找不到模块“../views/HomeView.vue”或
    vite+vue3+ts显示找不到模块“../views/HomeView.vue”或其相应的类型声明。ts(2307)一、在根目录下的env.d.ts文件(没有就自己创建)二、在env.d.ts文件中添加以下代码declaremodule'*.vue'{importtype{DefineComponent}from'vue'constcomponent:DefineCo......
  • 5分钟学设计模式:工厂方法,让你的代码像搭积木一样简单!
    大家好,我是知微。在上一次的美食街之旅中,我们探讨了简单工厂模式。今天,让我们继续在美食街的夜色中,探索工厂方法模式的奥秘。第一幕:美食街的繁华美食街上,小吃摊的生意越来越火,摊主们为了满足顾客的多样化需求,开始提供更多种类的小吃。顾客(你):老板,听说你们这除了煎饼果子,还有其......
  • 设计模式05----适配器模式
    适配器模式:适配器模式(AdapterPattern)是一种结构型设计模式,它允许不兼容的接口协同工作。这种模式涉及到一个单独的类,该类负责将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以一起工作。例如:USB转接口就是适配器,它能够将各种不同类型的接口(如HDMI、......
  • 设计模式学习(二)工厂模式——工厂方法模式
    目录前言工厂方法模式简介示例优点缺点使用场景前言前一篇文章介绍了简单工厂模式,提到了简单工厂模式的缺点(违反开闭原则,扩展困难),本文要介绍的工厂方法模式在一定程度上弥补了简单工厂模式的缺点。工厂方法模式简介工厂方法模式是创建型设计模式之一,它在抽象工厂类中声明创建......
  • 图神经网络入门示例:使用PyTorch Geometric 进行节点分类
    基于图的神经网络是强大的模型,可以学习网络中的复杂模式。在本文中,我们将介绍如何为同构图数据构造PyTorchData对象,然后训练不同类型的神经网络来预测节点所属的类。这种类型的预测问题通常被称为节点分类。我们将使用来自BenedekRozemberczki,CarlAllen和RikSarkar于2019......
  • java01基础入门
    java01基础入门准备javac-versionjava-versioncd..//回到上一级勾选文件扩展名设置Path环境变量IDEA创建工程开发步骤project->module->package->class设置主题、字体快捷键注释关键字基本组成:由数字、字母、下划线(_)和美元符($)等组......
  • 统一文件传输平台如何建设 才能实现文件传输受管、可控、高效?
    统一文件传输平台是为了满足企业或组织在不同网络区域间安全、高效地传输文件的需求而设计的系统。这样的平台通常具备以下特点:1、跨区域传输能力:支持在不同地理位置的分支机构或数据中心之间传输文件。2、安全性:提供加密传输、用户认证、权限控制等安全特性,确保数据在传输过......
  • CommunityToolkit从入门到精通(详细版)
    MVVM基础 Model:负责存储数据,以及对数据的处理。View:负责展示数据,以及与用户的交互。ViewModel:负责将Model的数据在View中显示出来,同时也负责将View中的事件传递给Model。可以说,ViewModel是Model和View之间的桥梁。组件模型(ComponentModel)ObservableObject......