关于设计模式的一点总结

一、GoF 23种设计模式

1.分类

GoF 23种设计模式可分为几类:创建型、结构型和行为型。如下表

分类设计模式
创建型单例模式、工厂方法模式、抽象工厂模式、原型模式、建造者模式
结构型代理模式、适配器模式、装饰者模式、桥接模式、组合模式、门面模式、享元模式
行为型模板方法模式、观察者模式、策略模式、解释器模式、责任链模式、命令模式、迭代器模式、调解者模式、备忘录模式、状态模式、访问者模式

2.关系

设计模式之间的关系如下图

二、几种容易混淆的设计模式的比较

  • 策略模式与委派模式

策略模式注重的是同类型算法之间的替换,可以避免大量使用if...else...;而委派模式注重的是任务的分发和调度,在任务分发的过程中,如果大量使用if...else...,根据情况也可以考虑使用策略模式,相当于在委派模式内部又套了一个策略模式。注意,委派模式不属于GoF 23种设计模式。

  • 装饰者模式与代理模式

装饰者模式是给对象动态扩展,而代理模式注重控制对象的访问;代理模式通常在代理类中创建被代理对象的实例,而装饰者模式通常把被装饰者作为构造参数。(这里说的是通常情况下,实际上静态代理也可以构造器传参)。

  • 装饰者模式与适配器模式

装饰者模式中装饰者与被装饰者可以实现相同的接口,而适配器模式中适配器与被适配者可以实现不同的接口。

三、心得体会

设计模式远不止GoF的23种,设计模式其实是经验的总结,为我们提供了一个可参考的解决方案。学习设计模式就是为了当我们遇到问题时,能够用前人的经验去解决问题,所以不需要去死记硬背,要理解每种设计模式解决的是什么样的问题,在需要的时候能够想起有这样一种方法即可。

今天简单总结一下,以后继续补充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/319083.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打字练习(Python代码模拟打字练习软件效果)

Python代码模拟打字练习软件效果,循环进行单行打字练习,结束时输出平均速度和综合正确率。 (笔记模板由python脚本于2024年01月03日 22:36:34创建,本篇笔记适合熟悉Python字符串和列表基本数据类型的coder翻阅) 【学习的细节是欢悦的历程】 P…

c++语言基础18-开房门

题目描述 假设你手里有一串钥匙,这串钥匙上每把钥匙都有一个编号,对应着一个房门的编号。现给你一个房门编号,你需要判断是否能够打开该房门。 输入描述 测试数据共有多组。 第一行为一个整数 s,表示共有多少组测试数据。 每组第一…

基于springboot智慧食堂管理系统源码和论文

随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理“智慧食堂”系统的最新形式。本论文是以构建“智慧食堂”系统为目标,使用java技术制作&…

Spark Streaming的DStream与窗口操作

实时数据处理已经成为当今大数据时代的一个重要领域,而Spark Streaming是Apache Spark生态系统中的一个关键模块,用于处理实时数据流。本文将深入探讨Spark Streaming中的DStream(离散流)概念以及如何使用窗口操作来处理实时数据。…

魔棒无人直播系统有哪些优势?

随着科技的发展,越来越多新鲜事物的出现,它们代替了我们做很多的事情,开始解放着自己的双手,其中,无人直播的出现,就让直播变得更加简单。 因为是无人直播,所以全程不需要真人出镜,…

【PID精讲 13 】位置式PID和增量式PID

文章目录 位置式PID和增量式PID一、位置式PID控制算法二、增量式PID控制算法及仿真三、位置式与增量式优缺点 位置式PID和增量式PID 在计算机控制系统中,PID控制是通过计算机程序实现的,因此它的灵活性很大。一些原来在模拟PID控制器中无法实现的问题&a…

【单片机 TB作品】节拍器,电子音乐节拍器,51单片机,Proteus仿真

节拍器的使用可以使练琴者正确掌握乐曲的速度,从而使音 乐练习达到事半功倍的效果。本课题基于单片机设计具有声光晋 示的电子乐器节拍器,充分利用单片机的定时和中断系统,通过 C语言程序设计,控制外部相关硬件电路,实现对音乐速,度 40~120次/分钟范围内连续可调,节拍114、 2/4…

Nest 框架:解锁企业级 Web 应用开发的秘密武器(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

【动态规划】【字符串】扰乱字符串

作者推荐 视频算法专题 涉及知识点 动态规划 字符串 LeetCode87扰乱字符串 使用下面描述的算法可以扰乱字符串 s 得到字符串 t : 如果字符串的长度为 1 ,算法停止 如果字符串的长度 > 1 ,执行下述步骤: 在一个随机下标处将…

uni-app 从入门到精通 3天快速掌握 文字版 学习专栏

大家好,我是java1234小锋老师。 近日锋哥又卷了一波课程,uni-app 从入门到精通 3天快速掌握教程,文字版视频版。三天掌握。 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从…

[C#]使用onnxruntime部署yolov8-onnx实例分割模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新…

芯课堂 | MCU之EXT

概述 本文将介绍一下华芯微特MCU的嵌套向量中断控制器(NVIC)与外部中断/事件控制器(EXTI)的使用方法等。 01.嵌套向量中断控制器(NVIC) NVIC的全称是Nested vectoredinterrupt controller,即嵌…