总结心得:各设计模式使用场景
-
单例模式:创建单个对象
-
工厂模式:创建对象交给工厂完成,当需要创建的对象是一系列相互关联或相互依赖的产品族时
-
原型模式:克隆对象,避免创建初始化开销
-
建造者模式:创建一个复杂对象,该对象有多个部分组成,Builder 组装这多个对象
-
代理对象:代替对真实对象访问,保护和隐藏目标对象
-
适配器模式:系统提供的接口客户端无法使用,这时使用适配器适配该抽象接口
-
装饰器模式:增强目标对象,不改变原有类结构的情况下,为对象添加新的行为或功能
-
桥接模式:对象本身有沿着多个维度变化的趋势,比如:视频文件格式有avi、rmvb等等格式,操作系统有Windows、Linux等等系统,桥接模式把这两种东西具有的多个维度结合起来
-
外观模式:系统功能复杂,外观模式提供一个简单的接口供客户调用,调用功能的过程交给接口完成
-
组合模式:组合模式正是应树形结构而生,所以组合模式的使用场景就是出现树形结构的地方。比如:文件目录显示,多级目录呈现等树形结构数据的操作。
-
享元模式:预先创建一些对象存储起来,并提供工厂返回这些对象,避免使用到时重复创建大量相似应用
-
模板方法模式:多个类的步骤存在相同的一些步骤,把这些步骤提取成抽象类,抽象类再提供抽象方法供子类来具体实现,调用抽象类的方法,实际调用的事子类重写的方法
-
策略模式:一个问题有多种处理算法,各算法彼此完全独立,且要求对客户隐藏具体算法的实现细节时
-
命令模式:
- 可以使请求排队执行请求
- 调用者和请求接收者解耦,使得调用者和接收者不直接交互
- 结合组合模式,将多个命令装配成一个组合命令,实现宏命令
- 结合备忘录模式,实现命令的撤销(Undo)与恢复(Redo)
-
责任链模式:一个请求不清楚是被哪个处理者处理时每个都通过一下直到被处理为止,或者需要被多个处理着按顺序处理时,
-
状态模式:某个对象在不同状态会有不同行为,如电梯的运行状态,ATM机的各种状态、订单状态、角色的不同状态(如跑动,跳跃,攻击等)
-
观察者模式:对象间存在一对多关系,一个对象的状态发生改变要通知其他对象
-
中介者模式:多个对象存在一对多联系,加入中介对象来负责转发通信
-
迭代器模式:为聚合对象实现多种遍历方式,并且只需要提供一个统一的接口(通过实现接口创建多种遍历方式)
-
访问者模式:一个对象集合有多个元素,需要从多个不同且不相干角度挨个访问这些对象,如:人物对象集合[学生、老师],家长角度访问学生的成绩和老师的能力,校长角度访问学生人数和老师任课科目
-
备忘录模式:某个对象数据需要备份,在某些时候供恢复使用
-
解释器模式:用一些符号表示一些执行过程,这些符号比较简单并且可以任意组合,不同组合会有不同执行结果,需要先定义这些符号的执行规则(即解释)
相关文章:
总结心得:各设计模式使用场景
单例模式:创建单个对象 工厂模式:创建对象交给工厂完成,当需要创建的对象是一系列相互关联或相互依赖的产品族时 原型模式:克隆对象,避免创建初始化开销 建造者模式:创建一个复杂对象,该对象…...
详解Vue3中的事件监听方式
本文主要介绍Vue3中的事件监听方式。 目录 一、v-on指令二、使用符号简写三、事件修饰符四、动态事件名五、常见的监听事件六、自定义事件 在Vue3中,事件监听的方式与Vue2有一些不同。 下面是Vue3中事件监听方式的详细介绍: 一、v-on指令 Vue3中仍然使…...
Unity关于easySave2 easySave3保存数据的操作;包含EasySave3运行报错的解决
关于easySave2 easySave3保存数据的操作;包含EasySave3运行报错的解决 /// 数据存储路径(Easy Save的默认储存位置为:Application.persistentDataPath,为了方便我们可以给它指定储存路径) #region 存储数据/*/// /// 存…...
2022年全球软件质量效能大会(QECon上海站)-核心PPT资料下载
一、峰会简介 近年来,以云计算、移动互联网、物联网、工业互联网、人工智能、大数据及区块链等新一代信息技术构建的智能化应用和产品出现爆发式增长,突破了对于软件形态的传统认知,正以各种展现方式诠释着对新型智能软件的定义。这也使得对…...
【python报错】UserWarning: train_labels has been renamed targets
UserWarning: train_labels has been renamed targetswarnings.warn(“train_labels has been renamed targets”) 这是一条 Python 警告信息,它表示 train_labels 这个变量已经被重命名为 targets,在将来的版本中可能会移除 train_labels。因此&#x…...
算法专题四:前缀和
前缀和 一.一维前缀和(模板):1.思路一:暴力解法2.思路二:前缀和思路 二. 二维前缀和(模板):1.思路一:构造前缀和数组 三.寻找数组的中心下标:1.思路一:前缀和 四.除自身以外数组的乘积ÿ…...
STM32学习笔记十五:WS2812制作像素游戏屏-飞行射击游戏(5)探索动画之帧动画
本章又是个重要的章节——动画。 动画,本质上时一系列静态的画面连续播放,欺骗人眼产生动画效果。这个原理自打十九世纪电影诞生开始,就从来没变过。 我们的游戏中也需要一些动画效果,比如,被击中时的受伤效果&#…...
期末复习(程序设计)
根据字符出现频率排序 【问题描述】 给定一个字符串 s ,根据字符出现的 频率 对其进行降序排序。一个字符出现的频率是它出现在字符串中的次数。 返回已排序的字符串。 频率相同的的字符按ascii值降序排序。 s不包含空格、制表符、换行符等特殊字符。 【输入格…...
html-css-js移动端导航栏底部固定+i18n国际化全局
需求:要做一个移动端的仿照小程序的导航栏页面操作,但是这边加上了i18n国家化,由于页面切换的时候会导致国际化失效,所以写了这篇文章 1.效果 切换页面的时候中英文也会跟着改变,不会导致切换后回到默认的语言 2.实现…...
Ubuntu Linux 入门指南:面向初学者
目录 1. Ubuntu Linux 简介 Ubuntu 的由来 Ubuntu 与其他 Linux 发行版的比较 Debian: Fedora: openSUSE: Arch Linux: Linux Mint: 第二部分:安装 Ubuntu 1. 准备安装 系统需求 创建 Ubuntu 启…...
常见算法面试题目
前言 总结一些常见的算法题目,每一个题目写一行思路,方便大家复习。具体题目的来源是下面的网站。 剑指offer 剑指offe2 leetcode200题 leetcode 100题 leetcode150题 leetcode 75题 文章目录 前言二叉树非递归遍历牛客JZ31 栈的压入、弹出序列 (…...
PiflowX组件-JDBCWrite
JDBCWrite组件 组件说明 使用JDBC驱动向任意类型的关系型数据库写入数据。 计算引擎 flink 有界性 Sink: Batch Sink: Streaming Append & Upsert Mode 组件分组 Jdbc 端口 Inport:默认端口 outport:默认端口 组件属性 名称展示名称默…...
算法导论复习题目
这题需要考虑什么呢? 一换元,二要使用主方法猜出结果,三是证明的时候添加一个低阶项来消除 LC检索 C(x)是从上帝视角来看的成本 对C(x)的一个估计: 由两个部分组成,就相当于由以往的经验对未来…...
HTTPS协议详解
目录 前言 一、HTTPS协议 1、加密是什么 2、为什么要加密 二、常见加密方式 1、对称加密 2、非对称加密 三、数据摘要与数据指纹 1、数据摘要 2、数据指纹 四、HTTPS加密策略探究 1、只使用对称加密 2、只使用非对称加密 3、双方都使用非对称加密 4、对称加密非…...
菜鸟学习vue3笔记-vue3 router回顾
1、路由router pnpm i vue-router2、创建使用环境 1.src下创建 router文件夹、里面创建index.ts文件 //创建一个路由暴露出去//1.引入createRouter import { createRouter, createWebHistory } from "vue-router";// import Home from ../components/Home.vue//…...
Mybatis枚举类型处理和类型处理器
专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…...
2023 NCTF writeup
CRYPTO Sign 直接给了fx,gx,等于私钥给了,直接套代码,具体可以参考: https://0xffff.one/d/1424 fx [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…...
golang的大杀器协程goroutine
在Golang中,协程(Goroutine)是轻量级的执行单元,用于实现并发编程。它是Golang语言的重要组成部分,提供了简洁、高效的方式来处理并发任务。 特点: 1)轻量级:Go语言的协程是轻量级…...
[Angular] 笔记 9:list/detail 页面以及@Output
1. Output input 好比重力,向下传递数据,list 传给 detail,smart 组件传给 dumb 组件,父组件传给子组件。input 顾名思义,输入数据给组件。 output 与之相反,好比火箭,向上传递数据或事件。ou…...
Linux学习笔记(一)
如果有自己的物理服务器请先查看这篇文章 文章目录 网卡配置Linux基础指令ls:列出目录内容cd(mkdir.rmkdir): 切换文件夹(创建,删除操作)cp:复制文件或目录mv:文件/文件夹移动cat:查看文件vi:文件查看编辑man:查看命令手册more: 查看文件内容less : 查看文件内容 ps: 显示当前进…...
Mars3D新手必读:从零开始的开发者实战手册
1. 初识Mars3D:数字地球的新世界 第一次打开Mars3D的场景编辑器时,那种震撼感至今难忘——就像小时候第一次转动地球仪,但这次是用代码在操控整个星球。作为国内领先的Web3D地理信息引擎,Mars3D用浏览器就能呈现毫米级精度的地形地…...
STM32架构解析:哈佛与冯·诺依曼的工程实践
STM32处理器架构解析:哈佛结构与冯诺依曼结构的工程实践 1. 计算机体系结构基础 1.1 冯诺依曼体系结构 冯诺依曼体系结构(Von Neumann architecture)是现代计算机的基础设计范式,其核心特征包括: 统一存储结构 &am…...
SeqGPT-560M代码补全能力展示:Python开发效率提升50%
SeqGPT-560M代码补全能力展示:Python开发效率提升50% 1. 引言 作为一名长期与代码打交道的开发者,我深知代码补全工具的重要性。好的补全工具不仅能减少敲击键盘的次数,更能帮助我们避免低级错误、保持编码思路的连贯性。最近体验了SeqGPT-…...
TouchGal Galgame社区终极指南:一站式游戏资源管理与交流平台
TouchGal Galgame社区终极指南:一站式游戏资源管理与交流平台 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 还在为寻找…...
Python+PySpark+Hadoop房价预测系统 房价预测 房源推荐系统 二手房推荐系统 随机森林回归预测模型、链家二手房 可视化大屏
1、项目 介绍 技术栈: Python房价预测分析系统 毕业设计 大屏 爬虫 机器学习 Flask框架、Echarts可视化、requests 爬虫、随机森林回归预测模型、链家二手房2、项目界面 (1)数据可视化大屏(2)房价预测(3&am…...
告别手动队列!ROS2多传感器同步新方案:message_filters与rclcpp的完美配合
告别手动队列!ROS2多传感器同步新方案:message_filters与rclcpp的完美配合 在机器人开发领域,多传感器数据同步一直是个令人头疼的问题。想象一下,当你的无人机同时搭载了双目相机、激光雷达和IMU时,如何确保这些传感…...
AI驱动的 Vue3应用开发平台深入探究(十五):扩展与定制之自定义设置器与属性编辑器
自定义设置器与属性编辑器 自定义 Setter 和属性编辑器构成了 VTJ 可扩展属性配置系统的基础,使开发者能够为物料组件属性创建专门的输入控件。该系统提供了基于插件的架构,与设计器环境无缝集成,同时为属性编辑场景提供最大的灵活性。 架构…...
为什么C++开发者需要关注LunaSVG这个SVG渲染库?
为什么C开发者需要关注LunaSVG这个SVG渲染库? 【免费下载链接】lunasvg lunasvg is a standalone SVG rendering library in C 项目地址: https://gitcode.com/gh_mirrors/lu/lunasvg 在现代软件开发中,矢量图形处理已经成为许多应用程序的核心需…...
Java 开发 日志技术
1.概述为什么要在程序中记录日志呢?便于追踪应用程序中的数据信息、程序的执行过程。便于对应用程序的性能进行优化。便于应用程序出现问题之后,排查问题,解决问题。便于监控系统的运行状态。2.日志框架JUL:这是JavaSE平台提供的官…...
3分钟快速配置:微信QQ防撤回补丁终极使用指南
3分钟快速配置:微信QQ防撤回补丁终极使用指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/GitHub…...
