Java知识复习(七)常见的设计模式(装饰、代理、观察、策略、建造)
前言
参考书籍:《秒懂设计模式》
1、装饰器模式(Decorator)
1、装饰器模式:对原始对象动态地进行“包装”,是对类实例“装饰”的结果;类似于继承的效果,但这个过程是动态的,是可设置的
我们可以通过女生化妆的例子来展示其效果
首先创建展示接口和女生类


把化妆品类看作装饰器

客户端看到的效果就是这样

2、但化妆品也有不同,所以我们也可以把装饰器设置成抽象类,便于化妆品类继承


客户端效果如下
3、装饰器模式的类结构

2、代理模式(Proxy)
1、代理模式:简单来说,就是代理方以业务对象的名义,代理了它的业务;就类似于经纪人和明星的关系,通常外人都是和经纪人交接,而不是直接和明星交接
我们通过路由器代理互联网服务的过程展示其效果


路由器对连接进行过滤后才能访问互联网

客户端效果如下:

2、与装饰器模式的区别:装饰器模式更加关注为其他对象增加功能;而代理模式更强调对访问的管控,甚至是将代理对象完全封装而隐藏起来
3、动态代理:指不需要专门针对某个接口去编写代码实现一个代理类,而是在接口运行时动态生成;其实就类似于抽象工厂,把共同的抽象特质提取出来,然后再分别组装的过程
4、代理模式的类结构
3、策略模式(Strategy)
1、策略模式:强调的是行为的灵活切换,抽象理解就是假设因为某种原因无法实行A计划,就马上更换为B计划达成目的。
我们通过算法和计数器的结合过程展示其效果
首先定义统一的算法策略接口
然后定义具体的策略类


定义实际应用的计算机类

客户端类的效果

2、核心思想就是将算法的设计和计算器的硬件分离,就像一个游戏机切换不同的游戏那样
3、策略模式的类结构

4、观察者模式(Observer)
1、观察者模式:根据被观察对象和观察对象之间一对多的依赖关系建立起一种行为自动触发机制,即根据被观察对象状态的改变通知所有观察者做出响应
我们通过买家预订购买商家的物品的过程来展示其效果


只买一类物品的买家

啥都买的买家

客户端效果如下
2、其实可以简单理解为充话费,如果话费到账了,就会有相关信息发给相关用户,如果没有到账,那消息就不会发送
3、观察者模式的类结构

5、建造者模式(Builder)
1、建造者模式:建造者模式又称为生成器模式,主要用于对复杂对象的构建、初始化,它可以将多个简单的组件对象按顺序一步步组装起来,最终构建成一个复杂的成品对象;即零件组装的过程
我们通过造房子的过程来理解其效果




工程总监执行工程实施过程

客户端实现效果
2、其实就是流程统一,但是根据需求不同,施工方式不统一
3、建造者模式的类结构

相关文章:
Java知识复习(七)常见的设计模式(装饰、代理、观察、策略、建造)
前言 参考书籍:《秒懂设计模式》 1、装饰器模式(Decorator) 1、装饰器模式:对原始对象动态地进行“包装”,是对类实例“装饰”的结果;类似于继承的效果,但这个过程是动态的,是可设…...
Linux系统看门狗应用编程
目录看门狗应用编程介绍打开设备获取设备支持哪些功能:WDIOC_GETSUPPORT获取/设置超时时间:WDIOC_GETTIMEOUT、WDIOC_SETTIMEOUT开启/关闭看门狗:WDIOC_SETOPTIONS喂狗:WDIOC_KEEPALIVE看门狗应用编程实战在产品化的嵌入式系统中&…...
Spring MVC 源码- LocaleResolver 组件
LocaleResolver 组件LocaleResolver 组件,本地化(国际化)解析器,提供国际化支持回顾先来回顾一下在 DispatcherServlet 中处理请求的过程中哪里使用到 LocaleResolver 组件,可以回到《一个请求的旅行过程》中的 Dispat…...
Servlet
Servlet1 简介2 快速入门3 执行流程4 生命周期5 方法介绍6 体系结构7 urlPattern配置8 XML配置1 简介 Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术。 使用Servlet就可以实现,根据不同的登录用户在页面上动态显示不同内容。 …...
简单的周总结
做一个简单的周总结。 校 OJ 上打了近 7 场比赛,ZR 及其他平台各一两场左右。 头几场打的中规中矩,分数大致在 100-200 左右,与同学分数差别不太大,但也没有很突出。 后面几场比较爆炸,分数一直在 100 以下࿰…...
Elasticsearch7.8.0版本进阶——IK中文分词器
目录一、ES 的默认分词器测试示例二、IK 中文分词器2.1、IK 中文分词器下载地址2.2、ES 引入IK 中文分词器2.3、IK 中文分词器测试示例三、ES 扩展词汇测试示例一、ES 的默认分词器测试示例 通过 Postman 发送 GET 请求查询分词效果,在消息体里,指定要分…...
一个阿里P6的说不会接口自动化测试,他不会是自己评的吧...
序 近期和一个阿里的测试工程师交流了一波,他竟然说我不会接口自动化测试,我当场就不服了我说你P6自己评级的吧,今天就带大家好好盘一盘接口自动化,本着以和大家交流如何实现高效的接口测试为出发点,本文包含了我在接…...
规则引擎与风控系统04:风控系统实例(下)
上一节把风控实例的基础代码都撸了出来。接下来再来把核心服务代码和规则文件写出来。 因为有了实体类、Dao,所以接来下就可以写服务类了。之前说过这个实例就是要实现两个目的: 1、一分钟内连续访问三次以上,就会被直接封杀; 2、黑名单用户登录会记录可疑事件。 所以服务类…...
我为什么选择Linux mint 21.1 “Vera“ ? Mint安装优化调教指南(分辨率DPI)
前言:为什么是Mint 笔者算是Linux老用户了,作为一个后端开发,尝试了多种不同发行版。 一开始是Manjaro这种Arch系,但是其对于开发而言实在是太过不稳定;每次滚动更新都要解决很多冲突。不适合当生产力(本…...
雅思经验(十四)
剑10 test3 阅读p3这篇阅读比较难做下来,主要是这个题材我们不太熟悉,介绍了一种成为拉皮塔人,他们在太平洋上航行,很多岛屿上都有他们足迹,后来人们发掘、探索他们的历史的故事。1.derelict 与 abandoned 主要是前面的…...
刚来的薪资20k,是我的2倍,我是真的卷不过,真的太变态了
在这个行业爬摸滚打5年了,从最开始点点点的功能测试到现在到现在成为高级测试,工资也翻了几倍,简单的说几句吧 改变的开始 之所以改变的原因很简单,我快被新来的卷死了,新来的本科是某211的,干劲十足&…...
五、DeepWalk、Node2Vec论文精读与代码实战【CS224W】(Datawhale组队学习)
开源内容:https://github.com/TommyZihao/zihao_course/tree/main/CS224W 子豪兄B 站视频:https://space.bilibili.com/1900783/channel/collectiondetail?sid915098 斯坦福官方课程主页:https://web.stanford.edu/class/cs224w 文章目录D…...
学习 Python 之 Pygame 开发魂斗罗(四)
学习 Python 之 Pygame 开发魂斗罗(四)继续编写魂斗罗1. 创建子弹类2. 根据玩家方向和状态设置子弹发射的位置(1). 站立向右发射子弹(2). 站立向左发射子弹(3). 站立朝上发射子弹(4). 蹲下发射子弹(5). 向斜方发射子弹(6). 奔跑时发射子弹(7). 跳跃时发射…...
Linux 基础知识:指令与shell
目录一、操作系统二、指令三、shell一、操作系统 什么是操作系统? 单纯的操作系统应该是指操作系统内核。内核的作用就是管理计算机的软硬件资源,让计算机在合适的时候干合适的事情。 但是有一个问题,并不是人人都会直接通过内核来操作计算机…...
【数通网络交换基础梳理1】二层交换机、以太网帧、MAC地址数据帧转发原理详解
一、网络模型 万年不变,先从模型结构分析,现在大家熟知的网络模型有两种。第一种是,OSI七层模型,第二种是TCP/IP模型。在实际运用中,参考更多的是TCP/IP模型。 OSI七层模型 TCP/IP模型 不需要全部理解,…...
《分布式技术原理与算法解析》学习笔记Day22
哈希与一致性哈希 在分布式系统中,哈希和一致性哈希是数据索引或者数据分布的常见实现方式。 数据分布设计原则 在分布式数据存储系统中,做存储方案选型时,一般会考虑以下因素: 数据均匀数据稳定节点异构性隔离故障域性能稳定…...
[MySQL]MySQL数据类型
文章目录数据类型分类数值类型tinyint类型bit类型float类型decimal类型字符串类型char类型varchar类型char和varchar对比日期和时间类型enum和set类型数据类型分类 MySQL中,支持各种各样的类型,比如表示数值的整型浮点型,文本、二进制类型、…...
利用steam搬砖信息差赚钱,单账号200+,小白也能轻松上手!
现在很多人在做互联网而且也赚到钱了,但还是有很多人赚不到钱,这是为什么? 这里我不得不说一个词叫做赛道,也就是选择,选择大于努力,项目本身大于一切,90%的人都觉得直播带货赚钱,但…...
树与二叉树与森林的相关性质
文章目录树的度树的性质二叉树的性质二叉树与森林树的度 树的度指的是树内所有节点的度数的最大值。 节点的度:节点所拥有的子树的数量。简单来说,我们直接数分支即可,例如下图: 在这颗二叉树中,节点2的度为2&#…...
MySQL面试题
文章目录MySQL索引Mysql索引分类InnDB索引与MyISAM索引实现有什么区别一个表中如果没有创建索引,那么还会创建B树么?B树原理B树怎么来的B树 叶子节点和非叶子节点B树能存储多少数据?MySQL索引 Mysql索引分类 mysql 索引分为三类:…...
OpenHTMLtoPDF:Java生态下的专业级HTML转PDF解决方案
OpenHTMLtoPDF:Java生态下的专业级HTML转PDF解决方案 【免费下载链接】openhtmltopdf An HTML to PDF library for the JVM. Based on Flying Saucer and Apache PDF-BOX 2. With SVG image support. Now also with accessible PDF support (WCAG, Section 508, PDF…...
实战指南:在Cortex-A53/A57平台上配置与调试AMBA AXI/ACE总线
Cortex-A53/A57平台AMBA总线实战:从寄存器配置到性能调优 1. AMBA总线架构与Cortex-A系列核心的深度适配 在嵌入式系统开发领域,AMBA总线作为ARM处理器生态的核心互联架构,其性能表现直接决定了SoC整体效能。Cortex-A53/A57作为经典的big.LIT…...
Windows CE嵌入式开发:实时USB设备插拔监控与信息持久化实战
1. 项目概述与核心思路 在嵌入式开发,尤其是涉及数据采集、文件交换或外设管理的项目中,实时感知USB设备的插拔状态是一个高频且关键的需求。想象一下,你正在开发一个工业数据记录仪,需要自动将U盘中的数据导入系统,或…...
终极指南:如何在Android设备上离线使用Zwift骑行模拟平台
终极指南:如何在Android设备上离线使用Zwift骑行模拟平台 【免费下载链接】zwift-offline Use Zwift offline 项目地址: https://gitcode.com/gh_mirrors/zw/zwift-offline 你是否曾梦想在无需网络连接的情况下享受专业的Zwift虚拟骑行体验?现在&…...
HSTracker:为macOS炉石传说玩家打造的数据智能助手
HSTracker:为macOS炉石传说玩家打造的数据智能助手 【免费下载链接】HSTracker A deck tracker and deck manager for Hearthstone on macOS 项目地址: https://gitcode.com/gh_mirrors/hs/HSTracker 在瞬息万变的炉石传说对局中,你是否曾因忘记对…...
终极指南:3分钟解决微信网页版无法访问的难题
终极指南:3分钟解决微信网页版无法访问的难题 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为微信网页版无法访问而烦恼吗ÿ…...
OpenVAS部署避坑指南:从Kali的`apt-get install gvm`到官方OVA镜像,我踩过的那些雷
OpenVAS部署避坑指南:从Kali的apt-get install gvm到官方OVA镜像实战复盘 1. 为什么OpenVAS部署总让人头疼? 三年前我第一次接触漏洞扫描工具时,OpenVAS的安装过程就给我留下了深刻印象。当时按照某技术论坛的教程,在Kali Linux…...
从Wi-Fi信号到降噪耳机:聊聊‘相位’在工程师日常调试中的那些事儿
从Wi-Fi信号到降噪耳机:聊聊‘相位’在工程师日常调试中的那些事儿 调试设备时突然出现的信号干扰,或是降噪耳机里挥之不去的底噪,往往让工程师们头疼不已。这些看似无关的问题背后,其实都藏着一个共同的关键因素——相位。不同于…...
告别MPU6050例程!ATK-IMU901与Arduino串口通信的3个关键避坑点
ATK-IMU901与Arduino串口通信的实战避坑指南 当你从MPU6050切换到ATK-IMU901时,可能会发现原本顺畅的代码突然"罢工"了。这不是你的错——这两款IMU模块在设计理念上存在本质差异。本文将带你深入理解ATK-IMU901的通信机制,避开三个最常见的移…...
快速傅里叶变换(FFT)原理与工程实践:从分治算法到信号处理应用
1. 从时域到频域:为什么我们需要FFT?如果你曾经处理过音频信号、图像数据,或者调试过通信系统,那你一定对“频谱”这个概念不陌生。我们生活的世界是时间的函数,声音随着时间起伏,图像像素在空间上排列&…...
