设计模式梳理

news2024/12/24 2:39:21

快速回顾

类别名称应用场景例子
创建型模式Factory模式共用统一接口
AbstactFactory模式共用统一接口
Singleton模式只构建一次,每次构建只返回自己
Builder模式一步步的进行复杂对象的构建链式构造器,解决复杂对象多个属性可选择性地设置的问题,保证对象构造是原子操作
Prototype模式通过自身复制构建新对象
结构型模式Bridge模式

存在多个维度抽象继承,造成类过多的问题。

备注:通过组合多个维度的抽象来解决继承的问题。

笔与颜色两个维度抽象,如果是蜡笔,笔和颜色是合并在一起的,只能按笔和颜色的组合数量创建对应数量的类。如果是毛笔和颜料,笔和颜色是分离的,这个时候应该用Bridge模式,通过组合的方式,把笔和颜色两个类组合在一起,而不应该通过继承的方式,将子类同时继承笔类和颜色类。
Adapter模式
Decorator模式

一个类需要经常添加新的方法。

备注:通过组合新方法类的方式来解决继承的问题。

Composite模式
Flyweight模式
Facade模式
Proxy模式
行为模式Template模式
Strategy模式
State模式
Observer模式
Memento模式
Mediator模式
Command模式
Visitor模式
Chain of Responsibility模式
Iterator模式
Interpreter模式

创建型模式

1. builder模式

原理:Builder定义接口,concreteBuilder继承Builder,concreteBuilder一步步创建Product,Director通过输入不同的concreteBuilder达到创建不同Product的目的。

结构型模式

2. Bridge模式

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ChatGPT】你会是被AI抢饭碗的那类人吗?

文章目录 前言一、AI替代“基础性工作”,二、AI没有魔法:人类做不到,它也做不到三 人类的恐惧:被替代、被超越四 AI让语言返祖,小语种与文化“濒危灭绝”五 人类的未来,教育何去何从?总结 前言 …

2023/5/9总结

Java基础(3) 1、成员变量和局部变量的区别 2.private关键字 是一个权限修饰符可以修饰成员变量和成员方法作用是保护成员不被别的类使用,被private修饰的成员只能在本类中才能访问 针对private修饰的成员变量,如果需要被其它类使…

缓存穿透、缓存雪崩和缓存击穿

1 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存中没有,每次查询都要去数据库中查询,导致频繁地访问数据库,从而影响系统的性能。攻击者可以利用这一点,对系统进行拒绝服务攻击。 1.1 缓存穿透举例 攻击者…

课程《JavaWeb基础框架程序设计》考试题上篇——基础应用题(计算应用、水仙花数)

文章目录 📋前言🎯第一题(30分)🎯第二题(30分)📝最后 📋前言 这篇文章是大学课程《JavaWeb基础框架程序设计》考试题目的内容,包括了原题和答案。题目只包括…

开关电源基础07:离线式开关电源变压器设计(2)

说在开头:关于那几年 1933年希特勒上台成为德国总理,纳粹党开始了针对犹太人的运动。英国的弗雷德里克.亚历山大.林德曼教授到访柏林,他制定了一份名单,开列的都是处境不妙的犹太科学家,趁机邀请他们离开德国&#xf…

Java EE--多线程(一)

目录 一、认识多线程 1.1 概念 (1) 线程是什么 (2)为啥要有线程? (3) 进程和线程的区别 (4)Java 的线程和操作系统线程的关系 1.2 创建线程 方法1 继承 Thread 类 方法2 实现Runnable接口…

数据结构学习记录——哈夫曼树(什么是哈夫曼树、哈夫曼树的定义、哈夫曼树的构造、哈夫曼树的特点、哈夫曼编码)

目录 什么是哈夫曼树 哈夫曼树的定义 哈夫曼树的构造 图解操作 代码实现 代码解析 哈夫曼树的特点 哈夫曼编码 不等长编码 二叉树用于编码 哈夫曼编码实例 什么是哈夫曼树 我们先举个例子&#xff1a; 要将百分制的考试成绩转化成五分制的成绩 if(score < …

ASEMI代理ADV7391BCPZ原装ADI车规级ADV7391BCPZ

编辑&#xff1a;ll ASEMI代理ADV7391BCPZ原装ADI车规级ADV7391BCPZ 型号&#xff1a;ADV7391BCPZ 品牌&#xff1a;ADI /亚德诺 封装&#xff1a;LFCSP-32 批号&#xff1a;2023 安装类型&#xff1a;表面贴装型 引脚数量&#xff1a;32 工作温度:-40C~85C 类型&…

ChatGPT实现markdown 格式与 emoji 表情

markdown 格式与 emoji 表情 书写文章时&#xff0c;巧妙的使用一些小图标&#xff0c;可以给文章增加不少的灵动感&#xff0c;读者也会感觉更加轻松。恰当的图标也能增进读者对内容的理解。ChatGPT 目前不能直接联网&#xff0c;但可以使用 emoji 表情文字来达到类似的效果。…

笔记本电脑开机黑屏没反应怎么办?

笔记本电脑开机黑屏没反应怎么办&#xff1f;有用户电脑开机之后&#xff0c;桌面会变成黑屏显示。而且是常常都会出现这样的问题&#xff0c;非常影响自己的电脑使用体验。那么遇到这个问题要怎么去进行问题的解决呢&#xff1f;来看看以下的解决方法吧。 准备工作&#xff1a…

超级详细的mysql数据库安装指南

MySql数据库 如果你的电脑是mac那么你看这位大佬的分享。 如果你的电脑是windows&#xff0c;参考下面的安装步骤。 一、下载mysql数据库&#xff1f; 进入MySQL官方网站&#xff08;MySQL Community Downloads&#xff09;&#xff0c;按下图顺序点击 1、进入下载页面 2、…

Dom树,什么是dom树?

相信很多初学前端的小伙伴&#xff0c;学了html, css, js之后&#xff0c;会遇到 一个名词 DOM树。 首先说一下DOM是什么&#xff1f; DOM 是 Document Object Model&#xff08;文档对象模型&#xff09;的缩写。 举个例子 我们日常生活中&#xff0c;经常会遇到一些写文档…

Spring Cloud第二季--消息驱动Spring Cloud Stream

文章目录 什么是Spring Cloud StreamStream 原理 牛刀小试消息重复消费问题 什么是Spring Cloud Stream Spring Cloud Stream is a framework for building highly scalable event-driven microservices connected with shared messaging systems. The framework provides a fl…

linux系统函数的运用

函数 函数详解函数的作用函数的定义函数的返回值函数的作用范围函数传参函数递归函数库 函数详解 函数的作用 在编写shell脚本的时候&#xff0c;经常会发现在多个地方使用了同一段代码&#xff0c;如果只是一小段代码&#xff0c;一般也无关紧要&#xff0c;但是要在脚本中多…

如何禁止电脑运行游戏?

在休息的时候&#xff0c;很多人都喜欢使用电脑玩游戏来消磨时间&#xff0c;但是对于未成年人来说&#xff0c;很容易沉迷游戏&#xff0c;从而影响正常的学业和成长。那么如何才能禁止电脑运行游戏呢&#xff1f;下面我们就来了解一下。 除了将电脑游戏卸载之外&#xff0c;还…

markdown甘特图语法介绍

1. 介绍 甘特图&#xff08;Gantt chart&#xff09;又称为横道图、条状图(Bar chart)。其通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。 2. 语法 1. 代码通用语法 在 markdown 的 代码模块 中编写甘特图&#xff0c;类型是mermaid&a…

华硕ROG|玩家国度魔霸新锐2023 Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原

华硕ROG|玩家国度魔霸新锐2023 Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原 文件地址&#xff1a;https://pan.baidu.com/s/1snKOsH3OMl3GZLqeAf-GLA?pwd8888 华硕工厂恢复系统 &#xff0c;安装结束后带隐藏分区以及机器所有驱动软件 需准备一个16G左右…

第三十二章 React路由组件的简单使用

1、NavLink的使用 一个特殊版本的 Link&#xff0c;当它与当前 URL 匹配时&#xff0c;为其渲染元素添加样式属性 <NavLink className"list-group-item" to"/home">Home</NavLink> <NavLink className"list-group-item" to&quo…

Python 密码破解指南:0~4

协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【OpenDocCN 饱和式翻译计划】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 收割 SB 的人会被 SB 们封神&#xff0c;试图唤醒 SB 的人是 SB 眼中的 SB。——SB 第三定律 零、简…

stream笔记

1、 创建流stream 1.1、 Stream 的操作三个步骤 1.2、 stream中间操作 1.2.1 、 limit、skip、distinct 1.2.2、 map and flatMap 1.2.3、 sort 自然排序和定制排序 1.3、 add and andAll difference: 1.4、 终止操作 1.4.1、 allmatch、anyMatch、noneMatch、max、min…