当前位置: 首页 > news >正文

java八股文面试[设计模式]——23种设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结

GOF编写的设计模式(可复用面向对象软件的基础)一书中说道:  本书涉及的设计模式并不描述新的或未经证实的设计,我们只收录那些在不同系统中多次使用过的成功设计

大部分设计模式要解决的都是代码的可重用性、可扩展性问题

如果说数据结构和算法是教你如何写出高效代码,那设计模式讲的是如何写出可扩展、可读、可维护的高质量代码,所以,它们跟平时的编码会有直接的关系,也会直接影响到你的开发能力。

设计模式的好处

不再编写 bullshit-code
提高复杂代码的设计开发能力
有助于我们读懂源码,学习框架更加事半功倍

GoF设计模式只有23个,但是它们各具特色 ,每个模式都为某一个可重复的设计问题提供了一套解决方案。

根据它们的用途,设计模式可分为 创建型(Creational) ,结构型(Structural)  和行为型(Behavioral)

创建型模式(5种):提供创建对象的机制,提升已有代码的灵活性和可复用性

常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。
不常用的有:原型模式。

结构型模式(7种):介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效

常用的有:代理模式、桥接模式、装饰者模式、适配器模式。
不常用的有:门面模式(外观模式)、组合模式、享元模式。

行为模式(11种):负责对象间的高效沟通和职责传递委派

常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。
不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。

知识记忆:抽工单建原 配饰代观桥  组元观模策  代命态责备  访中释

知识来源:马士兵教育

图文详解 23 种设计模式

相关文章:

java八股文面试[设计模式]——23种设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结 在GOF编写的设计模式(可复用面向对象软件的基础)一书中说道: 本书涉及的设计模式并不描述新的或未经证实的设计,我们只收录那些在不同系统中…...

mysql(十)mysql主从复制--主库切换

概述 可能为了更迭升级服务器,或者主库出现问题,又或者只是希望重新分配容量,此时需要切换主库。 如果这是计划内的切换,会相对容易点。只需要在从库上使用CHANGE MASTER TO命令,并设置合适的值。大多数的值都是可选…...

vue3项目的src下的各个文件夹介绍

在Vue 3项目中,通常的目录结构如下所示: src/|- assets/ # 存放静态资源文件,如图片、字体等|- components/ # 存放可复用的Vue组件|- views/ # 存放页面级别的Vue组件|- router/ # 存放路由相关的配置文件|- store…...

五、编译预处理

源程序编译预处理命令一律以‘#’开头 5.1宏定义 不带参数的宏定义 # define 宏名 字符串 宏命令之后,出现宏名的地方均用其对应的字符串来替换。 宏替换是一种”机械替换“,宏定义语句后一般不加分号,因为它仅具有替换功能,…...

应用出海,Google 分享如何让数字营销素材再上层楼

数字营销广告要想取得理想的效果,广告素材是最关键的决定因素之一。 事实上米贸搜谷歌推广发现,在广告给品牌带来的销售额增量中,有 47% 都归功于广告素材。在当今自动化时代,广告素材的作用尤其重要:固然机器可以完成…...

酱香咖啡喝了没?用数据分析揭秘瑞幸咖啡的7500万用户增长策略

瑞幸 X 茅台 这波联名赢麻了,不仅狂卖 542 万杯,甚至带动茅台市值飙升200亿。 瑞幸这几年联名搞了不少,又是线条小狗的爱情故事,又是椰树、维密、周大福、足球的,下面老李就从数据分析角度,带大家来看一下…...

Grafana之魔法:揭秘数据可视化的艺术

在数据驱动的时代,如何有效地呈现和理解数据成为了每个组织和个人的核心任务。Grafana作为一个领先的开源数据可视化工具,为我们提供了强大的功能和灵活性。本文将深入探讨Grafana的魔法,以及它如何帮助我们更好地理解数据。 Grafana简介 G…...

c高级day2作业

写一个1.sh脚本,将以下内容放到脚本中: 在家目录下创建目录文件,dir 在dir下创建dir1和dir2 把当前目录下的所有文件拷贝到dir1中, 把当前目录下的所有脚本文件拷贝到dir2中 把dir2打包并压缩为dir2.tar.xz 再把dir2.tar.xz…...

第3章 【MySQL】字符集和比较规则

3.1 字符集和比较规则简介 3.1.1 字符集简介 如何存储字符串?需要建立字符与二进制数据的映射关系。建立这个关系需要: 1.把哪些字符映射成二进制数据? 2.怎么映射? 将一个字符映射成一个二进制数据的过程也叫做 编码 &#…...

2023 年全国大学生数学建模D题目-圈养湖羊的空间利用率

D题目应该是专科题目???不确定了 感觉类似一个细胞分裂问题一样,1,2,4,8, 题目1中规中矩 按照前面说的分配方法,一步一步计算进行 缺口的问题考虑反推回去&#xff0c…...

攻防世界-WEB-ics-05

打开靶机 只有设备维护中心可以点开 点标签得到新的url pageindex 想到文件包含漏洞(URL中出现path、dir、file、pag、page、archive、p、eng、语言文件等相关关键字眼 利用php伪协议查看源码 出现一段base64源码,进行转码得出源码 ?pagephp://filter…...

typedef的四种用法

目录 前言 1)为基本数据类型定义类型名 2)为自定义数据类型(结构体、枚举、共用体)定义别名 3)为数组定义简易的别名 4)为指针定义简洁的名称 前言 在看工程的过程中发现typedef的如下用法&#xff0c…...

Rstudio开不开了怎么办?R is taking longer to start than usual

Rstudio Server 启动时卡死 在使用 linux 服务器版 RstudioServer 的过程中,发现出现了一个问题,导致没有办法正常载入工作页面,网页提示信息是“R is taking longer to start than usual”,直接翻译过来就是“这次启动 R 会比平…...

kubernetes 集群安装加载 br_netfilter 模块

kubernetes 集群安装加载 br_netfilter 模块 Linux 系统默认是禁止数据包转发功能。 加载系统参数: # sysctl -p /etc/sysctl.d/k8s.conf 错误提示: sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or director…...

CATIA Composer软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 CATIA(Computer-Aided Three-dimensional Interactive Application)是一款由法国达索系统公司开发的三维计算机辅助设计(CAD)软件。它是一种全面的产品开发解决方案,广泛…...

入行测试一年半的心得体会

成为xx一员测试已经有1年半了,一直没有真正坐下来花些时间将自己的思路理清一下。刚好近期公司落地了OKR,给自己制定了OKR之后思路终于开始清晰起来,朦朦胧胧地开始看清了远方的路,麻着胆子分析一下自己,毕竟摸黑走路的…...

Vue的props配置项

简介:Vue中的组件模板是可以复用的,但是模板中的数据是可以改变的。props配置项用于解决组件迁移复用时接受和保存传递给组件的数据的问题。 1.如何给组件传递数据? 答:按照key:value的形式进行传递。 2.如何保存传递给组件的数…...

Python开源项目周排行 2023年第32周

#2023年第32周2023年9月2日1htmx一款在Django技术栈最近比较热门的前端框架。 他的理念是—— 「让网页回归HTML的本质,不再受JS束缚」mx 出现在 2020 年,创建者Carson Gross 说 htmx 来源自他于 2013 年研究的一个项目intercooler.js。2020 年&#xff…...

Python实现猎人猎物优化算法(HPO)优化卷积神经网络回归模型(CNN回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…...

mysql8 Found option without preceding group错误

这个错误说起来是真的坑,今晚帮同学在window操作系统上安装mysql8当自定义my.ini文件的时候 就出现一下错误,死活启动不起来 一直报错。当删掉这个my.ini文件的时候却能启动,刚开始以为是my.ini里的配置选项不对,一个一个筛查后依…...

MySQL 分库分表实战

&#xfeff;# MySQL 分库分表实战数据量到了千万级&#xff0c;单表扛不住了&#xff0c;就要分库分表。这篇说说怎么做。## 什么时候需要分库分表&#xff1f; 单表数据量&#xff1a; - < 500万&#xff1a;不用分&#xff0c;加索引、优化 SQL - 500万~2000万&#xff1…...

Frida Hook Java层还原Android客户端签名算法

1. 这不是“调用API”&#xff0c;而是拆解签名生成的完整逻辑链 你有没有遇到过这种情况&#xff1a;App每次请求都带一个叫 api-sign 的字段&#xff0c;值像一串随机字符串&#xff0c;长度固定、格式规整&#xff0c;但无论你怎么翻网络请求日志、抓包重放、甚至改参数重…...

稀疏矩阵:深度学习三大架构的统一数学语言

1. 稀疏矩阵&#xff1a;深度学习架构的统一数学语言在深度学习领域&#xff0c;卷积神经网络(CNN)、循环神经网络(RNN)和Transformer长期被视为三种截然不同的架构范式。但当我们透过表象看本质&#xff0c;会发现它们共享着相同的数学内核——稀疏矩阵运算。这种统一性不仅具…...

非结构化网格数据处理:从传统插值到GNN与PINNs的AI求解器演进

1. 项目概述&#xff1a;当计算物理遇上非结构化网格在计算流体力学、结构力学、环境模拟这些硬核的工程与科学领域&#xff0c;我们每天都在和“网格”打交道。你可以把网格想象成覆盖在复杂物体&#xff08;比如一架飞机机翼、一座大坝&#xff0c;或者一片海洋&#xff09;表…...

基于流形学习与kNN的稀疏传感风场估计:无人机安全起降新思路

1. 项目概述与核心挑战在无人机城市空中交通&#xff08;UAM&#xff09;和垂直起降场&#xff08;Vertiport&#xff09;的运营中&#xff0c;起降阶段的安全性是重中之重。这个阶段&#xff0c;无人机对风场的变化极为敏感&#xff0c;突如其来的阵风或复杂涡流都可能导致姿态…...

Unity Android StreamingAssets路径原理与安全读取方案

1. 为什么这个路径问题会让人反复踩坑&#xff1f;在Unity Android项目里&#xff0c;StreamingAssets路径看似只是个字符串拼接问题&#xff0c;但实际开发中&#xff0c;它几乎是我接手过的每个中大型项目必修的“排障课”。不是因为代码难写&#xff0c;而是因为——它在不同…...

为什么92%的医学生用错Claude读文献?——神经内科、肿瘤学、循证护理三大领域TOP10错误清单(含修正对照表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么92%的医学生用错Claude读文献&#xff1f; 医学生普遍将Claude当作“高级PDF阅读器”&#xff0c;直接上传整篇NEJM或Lancet论文PDF并输入“总结一下”&#xff0c;却忽视其对长文本结构化处理的…...

量子电路生成式AI技术:原理、应用与挑战

1. 量子电路生成式AI技术概述量子计算正在经历一场由生成式人工智能技术驱动的变革。作为量子计算的基本构建块&#xff0c;量子电路的自动生成技术正在从理论探索快速转向实际应用。这项技术通过AI模型自动产生可执行的量子电路描述&#xff0c;包括Qiskit代码、OpenQASM程序和…...

二、Socket 编程 TCP

Socket 编程 TCP 一、TCP 编程整体认识 TCP 是面向连接的可靠传输协议。和 UDP 不同&#xff0c;UDP 可以直接 sendto/recvfrom 收发数据&#xff0c;而 TCP 通信之前必须先建立连接。 TCP 服务端基本流程&#xff1a; socket() -> bind() -> listen() -> accept(…...

Keil MDK中自定义CMSIS代码模板实战指南

1. 自定义CMSIS用户代码模板的完整指南作为一名嵌入式开发老手&#xff0c;我经常需要在Keil MDK环境中创建各种RTOS任务模板。官方提供的模板虽然好用&#xff0c;但实际项目中我们往往需要根据公司编码规范或特定硬件平台定制专属模板。今天我就来分享如何在CMSIS环境中添加自…...