java八股文面试[设计模式]——23种设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结
在GOF编写的设计模式(可复用面向对象软件的基础)一书中说道: 本书涉及的设计模式并不描述新的或未经证实的设计,我们只收录那些在不同系统中多次使用过的成功设计。
大部分设计模式要解决的都是代码的可重用性、可扩展性问题
如果说数据结构和算法是教你如何写出高效代码,那设计模式讲的是如何写出可扩展、可读、可维护的高质量代码,所以,它们跟平时的编码会有直接的关系,也会直接影响到你的开发能力。
设计模式的好处
不再编写 bullshit-code
提高复杂代码的设计和开发能力
有助于我们读懂源码,学习框架更加事半功倍
GoF设计模式只有23个,但是它们各具特色 ,每个模式都为某一个可重复的设计问题提供了一套解决方案。
根据它们的用途,设计模式可分为 创建型(Creational) ,结构型(Structural) 和行为型(Behavioral)
创建型模式(5种):提供创建对象的机制,提升已有代码的灵活性和可复用性
常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。
不常用的有:原型模式。
结构型模式(7种):介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效
常用的有:代理模式、桥接模式、装饰者模式、适配器模式。
不常用的有:门面模式(外观模式)、组合模式、享元模式。
行为模式(11种):负责对象间的高效沟通和职责传递委派
常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。
不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。
知识记忆:抽工单建原 配饰代观桥 组元观模策 代命态责备 访中释
知识来源:马士兵教育
图文详解 23 种设计模式
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
java八股文面试[设计模式]——23种设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结 在GOF编写的设计模式(可复用面向对象软件的基础)一书中说道: 本书涉及的设计模式并不描述新的或未经证实的设计,我们只收录那些在不同系统中…...
![](https://img-blog.csdnimg.cn/d081bebec11449bf84d8d5b1359119e9.png)
mysql(十)mysql主从复制--主库切换
概述 可能为了更迭升级服务器,或者主库出现问题,又或者只是希望重新分配容量,此时需要切换主库。 如果这是计划内的切换,会相对容易点。只需要在从库上使用CHANGE MASTER TO命令,并设置合适的值。大多数的值都是可选…...
![](https://www.ngui.cc/images/no-images.jpg)
vue3项目的src下的各个文件夹介绍
在Vue 3项目中,通常的目录结构如下所示: src/|- assets/ # 存放静态资源文件,如图片、字体等|- components/ # 存放可复用的Vue组件|- views/ # 存放页面级别的Vue组件|- router/ # 存放路由相关的配置文件|- store…...
![](https://www.ngui.cc/images/no-images.jpg)
五、编译预处理
源程序编译预处理命令一律以‘#’开头 5.1宏定义 不带参数的宏定义 # define 宏名 字符串 宏命令之后,出现宏名的地方均用其对应的字符串来替换。 宏替换是一种”机械替换“,宏定义语句后一般不加分号,因为它仅具有替换功能,…...
![](https://img-blog.csdnimg.cn/img_convert/d2589c4e86a0a6928ee6ec5caaa17bc5.png)
应用出海,Google 分享如何让数字营销素材再上层楼
数字营销广告要想取得理想的效果,广告素材是最关键的决定因素之一。 事实上米贸搜谷歌推广发现,在广告给品牌带来的销售额增量中,有 47% 都归功于广告素材。在当今自动化时代,广告素材的作用尤其重要:固然机器可以完成…...
![](https://img-blog.csdnimg.cn/e36fae8cf29c4a1d94612af05840b450.png)
酱香咖啡喝了没?用数据分析揭秘瑞幸咖啡的7500万用户增长策略
瑞幸 X 茅台 这波联名赢麻了,不仅狂卖 542 万杯,甚至带动茅台市值飙升200亿。 瑞幸这几年联名搞了不少,又是线条小狗的爱情故事,又是椰树、维密、周大福、足球的,下面老李就从数据分析角度,带大家来看一下…...
![](https://img-blog.csdnimg.cn/79bf5a23d0674c7fad8f3f8cffa3749b.png#pic_center)
Grafana之魔法:揭秘数据可视化的艺术
在数据驱动的时代,如何有效地呈现和理解数据成为了每个组织和个人的核心任务。Grafana作为一个领先的开源数据可视化工具,为我们提供了强大的功能和灵活性。本文将深入探讨Grafana的魔法,以及它如何帮助我们更好地理解数据。 Grafana简介 G…...
![](https://img-blog.csdnimg.cn/2b9a56fae1714c0986f8bcbcb9cf57a5.png)
c高级day2作业
写一个1.sh脚本,将以下内容放到脚本中: 在家目录下创建目录文件,dir 在dir下创建dir1和dir2 把当前目录下的所有文件拷贝到dir1中, 把当前目录下的所有脚本文件拷贝到dir2中 把dir2打包并压缩为dir2.tar.xz 再把dir2.tar.xz…...
![](https://img-blog.csdnimg.cn/5c2ccd54226541d88bbbebaef5315a31.png)
第3章 【MySQL】字符集和比较规则
3.1 字符集和比较规则简介 3.1.1 字符集简介 如何存储字符串?需要建立字符与二进制数据的映射关系。建立这个关系需要: 1.把哪些字符映射成二进制数据? 2.怎么映射? 将一个字符映射成一个二进制数据的过程也叫做 编码 &#…...
![](https://img-blog.csdnimg.cn/91c10cd0f7f2439f858a7684ccb08042.png)
2023 年全国大学生数学建模D题目-圈养湖羊的空间利用率
D题目应该是专科题目???不确定了 感觉类似一个细胞分裂问题一样,1,2,4,8, 题目1中规中矩 按照前面说的分配方法,一步一步计算进行 缺口的问题考虑反推回去,…...
![](https://img-blog.csdnimg.cn/61dd6a8327474109bf5742c807b02c8d.png)
攻防世界-WEB-ics-05
打开靶机 只有设备维护中心可以点开 点标签得到新的url pageindex 想到文件包含漏洞(URL中出现path、dir、file、pag、page、archive、p、eng、语言文件等相关关键字眼 利用php伪协议查看源码 出现一段base64源码,进行转码得出源码 ?pagephp://filter…...
![](https://www.ngui.cc/images/no-images.jpg)
typedef的四种用法
目录 前言 1)为基本数据类型定义类型名 2)为自定义数据类型(结构体、枚举、共用体)定义别名 3)为数组定义简易的别名 4)为指针定义简洁的名称 前言 在看工程的过程中发现typedef的如下用法,…...
![](https://img-blog.csdnimg.cn/img_convert/df985160f27aa4c509c8ac351cf29974.png)
Rstudio开不开了怎么办?R is taking longer to start than usual
Rstudio Server 启动时卡死 在使用 linux 服务器版 RstudioServer 的过程中,发现出现了一个问题,导致没有办法正常载入工作页面,网页提示信息是“R is taking longer to start than usual”,直接翻译过来就是“这次启动 R 会比平…...
![](https://www.ngui.cc/images/no-images.jpg)
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…...
![](https://img-blog.csdnimg.cn/f4b8a73f19c84cb99ae96609454d48a4.png)
CATIA Composer软件安装包分享(附安装教程)
目录 一、软件简介 二、软件下载 一、软件简介 CATIA(Computer-Aided Three-dimensional Interactive Application)是一款由法国达索系统公司开发的三维计算机辅助设计(CAD)软件。它是一种全面的产品开发解决方案,广泛…...
![](https://img-blog.csdnimg.cn/7dd5eba5a750426b811d7136f3a4a5bd.png)
入行测试一年半的心得体会
成为xx一员测试已经有1年半了,一直没有真正坐下来花些时间将自己的思路理清一下。刚好近期公司落地了OKR,给自己制定了OKR之后思路终于开始清晰起来,朦朦胧胧地开始看清了远方的路,麻着胆子分析一下自己,毕竟摸黑走路的…...
![](https://img-blog.csdnimg.cn/fc260b26ab0e4231949a33e2d9842453.png)
Vue的props配置项
简介:Vue中的组件模板是可以复用的,但是模板中的数据是可以改变的。props配置项用于解决组件迁移复用时接受和保存传递给组件的数据的问题。 1.如何给组件传递数据? 答:按照key:value的形式进行传递。 2.如何保存传递给组件的数…...
![](https://www.ngui.cc/images/no-images.jpg)
Python开源项目周排行 2023年第32周
#2023年第32周2023年9月2日1htmx一款在Django技术栈最近比较热门的前端框架。 他的理念是—— 「让网页回归HTML的本质,不再受JS束缚」mx 出现在 2020 年,创建者Carson Gross 说 htmx 来源自他于 2013 年研究的一个项目intercooler.js。2020 年ÿ…...
![](https://img-blog.csdnimg.cn/d88697d3865a43489b1161f79ffc5bc5.png)
Python实现猎人猎物优化算法(HPO)优化卷积神经网络回归模型(CNN回归算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…...
![](https://img-blog.csdnimg.cn/838fec9a25354fb8aca06da9de3c72b7.png#pic_center)
mysql8 Found option without preceding group错误
这个错误说起来是真的坑,今晚帮同学在window操作系统上安装mysql8当自定义my.ini文件的时候 就出现一下错误,死活启动不起来 一直报错。当删掉这个my.ini文件的时候却能启动,刚开始以为是my.ini里的配置选项不对,一个一个筛查后依…...
![](https://img-blog.csdnimg.cn/457a44f1e2584526aa59958681a0779a.png)
uniapp 路由不要显示#
在Uniapp中,路由默认使用的是hash模式,即在URL中添加#符号。如果你不想在URL中显示#,可以切换为使用history模式。 要在Uniapp中使用history模式,可以按照以下步骤进行操作: 打开manifest.json文件。在"app&qu…...
![](https://www.ngui.cc/images/no-images.jpg)
算法设计与分析 | 最多约数
题目: 正整数x的约数是能整除x的正整数。正整数x 的约数个数记为div(x)。例如,1,2,5,10 都是正整数10 的约数,且div(10)4。设a 和b 是2 个正整数,a≤b,找出a和b之间约数个数最多的数…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL 数据库常用操作语句的总结
1、创建数据库: CREATE DATABASE database_name;2、删除数据库: DROP DATABASE database_name;3、选择数据库: USE database_name;4、创建表: CREATE TABLE table_name (column1 datatype [condition],column2 datatype [cond…...
![](https://www.ngui.cc/images/no-images.jpg)
【面试经典150题】H 指数
题目链接 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她&#x…...
![](https://img-blog.csdnimg.cn/1698d302390f4bb4a1468cc4878e4af5.png)
ARM DIY(十)LRADC 按键
前言 ARM SOC 有别于单片机 MCU 的一点就是,ARM SOC 的 GPIO 比较少,基本上引脚都有专用的功能,因为它很少去接矩阵键盘、众多继电器、众多 LED。 但有时 ARM SOC 又需要三五个按键,这时候 LRADC 就是一个不错的选择,…...
![](https://img-blog.csdnimg.cn/7a316fa46b8649d6bfa6906f56f6268e.png)
每日一练 | 网络工程师软考真题Day31
阅读以下说明,答复以下【问题1】至【问题7】 【说明】 某网络拓扑结构如图3-1所示。网络A中的DNS_Server1和网络B中的DNS_Server2分别安装有Windows Server 2003并启用了DNS效劳。DNS_Server1中安装有IIS6.0,建立了一个域名为 abc 的Web站点。 图3-1 【…...
![](https://www.ngui.cc/images/no-images.jpg)
最优化:建模、算法与理论(优化建模——2)
3.10 K-均值聚类 聚类分析是 统计学中的一个基本问题,其在机器学习,数据挖掘,模式识别和图像分析中有着重要应用。聚类不同于分类,在聚类问题中我们仅仅知道数据点本身,而不知道每个数据点具体的标签。聚类分析的任务…...
![](https://img-blog.csdnimg.cn/d3c37b29f3a44f69959e42d646260892.png)
库的相关操作
目录 一、创建数据库 1,创建数据库规则 2、创建案例 二、字符集和校验规则 1、查看系统默认字符集以及校验规则 2、查看数据库支持的字符集以及校验规则 3、校验规则对数据库的影响 三、操纵数据库 1、查看数据库和目前所在数据库 2、显示创建语句 3、修改数据库 4、…...
![](https://img-blog.csdnimg.cn/b2da75cbc4ac4c088c7d7d7f2ac72b5f.png)
程序分区:全局区、常量区、栈区、堆区、代码区
#include <iostream> using namespace std; //全局变量 int g_a 10; int g_b 10; //全局常量 const int c_g_a 10; const int c_g_b 10;int main() { //局部变量 int a 10; int b 10; //打印地址 cout << "局部变量a地址为: " <…...
![](https://www.ngui.cc/images/no-images.jpg)
Jtti:windows虚拟机如何设定永久静态路由
在Windows虚拟机上设置永久静态路由需要使用命令行工具,具体步骤如下: 打开命令提示符: 在Windows虚拟机中,按下Win R组合键,输入"cmd"并按回车键,以打开命令提示符。 查看当前路由表࿱…...
![](https://yunqi-tech.oss-cn-hangzhou.aliyuncs.com/20130129021200876.jpg?x-oss-process=image/watermark,image_aW1wb3J0LmpwZw==,g_se,x_1,y_1)
wordpress编辑页面打开慢/免费的b2b平台
2019独角兽企业重金招聘Python工程师标准>>> 首先通过chkconfig命令看看MySQL在不在可管理的列表中,命令是: chkconfig --list如果列表中没有mysqld这个,需要先用这个命令添加: chkconfig add mysqld 然后用这个命令设…...
![](https://img-blog.csdnimg.cn/20210105230716542.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDI0Njg4,size_16,color_FFFFFF,t_70)
深圳代做网站/qq群引流推广平台
Web基本笔记~04.css入门 上一期 CSS 的引入方式 内联样式(行内样式) <p style"background: orange; font-size: 30px;">MyFirstCSS<p>内部样式 <html><head><meta charset"utf-8" /><title&g…...
![](https://img-blog.csdnimg.cn/35de1f51dd034bcdb898c7fd3db5c7b2.png)
深圳网站建设小江/泉州网站seo外包公司
智慧寻源 多策略、多场景寻源,多种看板让寻源过程全程可监控,根据不同采购场景,采取不同寻源策略, 实现采购寻源线上化管控;同时支持公域和私域寻源。 询价比价 全程线上询比价,信息公开透明,可…...
![](/images/no-images.jpg)
wordpress主题著作权/百度商家平台登录
intitle 搜索网页中标题中函数有该文字的信息inurl 搜索路径中包含文字的信息alliurl 和inurl差不多,但是更精确filetype 搜索后缀名结尾的文件site 搜索制定域名的文件 转载于:https://www.cnblogs.com/52forjie/p/8682397.html...
![](https://img-blog.csdnimg.cn/3d378e2ede66496d8522351a3f619b90.png)
1024d wordpress/营销顾问
目录 1 项目总体概述 1.1 项目背景 1.2 建设内容 1.3 建设目标 2 项目需求理解 2.1 业务需求 2.2 功能需求 3 项目技术方案 3.1 建设方案 3.1.1 设计思路 3.1.2 架构设计 3.1.3 功能实现 3.2 安全方案 3.2.1 系统安全原则 3.2.2 系统安全措施 4…...