Java知识复习(七)常见的设计模式(装饰、代理、观察、策略、建造)

21 篇文章 5 订阅
订阅专栏

前言

参考书籍:《秒懂设计模式》

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、建造者模式的类结构
在这里插入图片描述

代理模式装饰器模式的区别
weixin_43442127的博客
02-12 1461
代理模式装饰器模式的区别
设计模式代理模式装饰器模式区别
心相印的专栏
12-11 551
前言 从菜鸟设计模式教程上摘下来一段解释代理模式装饰器模式、适配器模式的区别: 和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口; 和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。 代理模式装饰器模式非常相近,本文通过举例,针对俩者的区别进行探讨。 示例:孩子会吃饭 创建孩子吃饭的接口 public interface IChi...
Java设计模式代理模式
最新发布
m0_68821222的博客
01-24 887
一个类代表另一个类的功能,属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能。代理模式就是给一个对象提供一个代理,并由代理对象控制原对象的引用。它使得客户不能直接与真正的目标对象通信。代理对象是目标对象的代表,其他需要与这个目标对象打交道的操作都是和这个代理对象在交涉。目标类的代理者。例如:1.买房找中介,中介帮助完成找房源、沟通协调、办手续等操作。2.买车找4S店,4S店负责介绍,买保险等,汽车厂不需要出面。3.汽车厂卖汽车,不可能自己卖。
Java设计模式(六)装饰器模式-与代理模式的区别-项目实战应用
孔明的博客
07-13 2638
装饰器模式(Decorator Pattern): 在不改变对象自身的基础上,在程序运行期间给对象动态的添加职责;感觉有点儿类似于继承,不改变父类,子类可拓展功能; 和代理模式代理设计模式) 真是太像了,简直一摸一样场景: 项目一期开发的时候,并没有给鉴权部分设置缓存;二期开发考虑到性能问题,想要给鉴权部分加上缓存,这里就选择了使用装饰器模式处理...
JAVA中23种设计模式
qw_0214的博客
12-23 1219
一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式: 共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式: 共种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式: 共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式
Java中的代理模式装饰者模式
Code_Boy_Code的博客
08-06 2256
1. 代理模式的原理 使用一个代理将对象包装起来,然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理代理对象决定是否以及何时将方法调用转到原始对象上。 举一个简单的例子,比如一个生产羽绒服的工厂,生产羽绒服,生产完成之后就直接对消费者进行出售,虽然这款羽绒服可以保暖,但是现在人们的要求变高了要求羽绒服不但保暖还要好看,连包装都要好看。怎么办了这个羽绒服工厂只能生产羽绒服,不懂怎么包装美化。后来慢慢的有一些人看到了商机,就是做这个羽绒服的代理商,这个代理商有设备对羽绒服进行包装美化。这个代理商的
Java 23种设计模式系列之代理模式(常用)
weixin_51094637的博客
02-08 1128
目录 一、代理模式 二、静态代理 三、动态代理(为了解决静态代理的缺点) 一、代理模式 1.什么是代理模式代理模式就是给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 通俗的来讲代理模式就是我们生活中常见的中介。 举例说明,假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。我只是想买一辆车而已为什么我还要额外做这么多事呢?于是我就通过中介公司来买车,他们来给我找车源,帮我办理车辆过户流程,我只是负责选
Java学习-设计模式-装饰器模式和代理模式的区别
xxydzyr的博客
03-16 1692
Java学习-设计模式-装饰器模式和代理模式的区别 区别: **装饰器模式: ** 关注于在一个对象上动态的添加方法。当我们使用装饰器模 式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器。 **代理模式: ** 关注于控制对对象的访问。用代理模式代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的...
Java 装饰模式 代理模式
Willow的博客
01-01 331
参考程杰《大话设计模式装饰模式 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。 Component是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator装饰抽象,继承Component,从外类来扩展Component功能,但对于Component来说,是无需知道Decorator的存在的。ConcreteDecorator是具体装饰对象,起到给Component添加.
Java 经典设计模式讲解以及项目实战
06-14
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
Java面试 java设计模式整理 单例、工厂、策略等 面试使用,学习使用
04-20
java设计模式大体上分为三大类: 2 设计模式遵循的原则有6个: 2 1. 工厂模式(Factory Method) 2 2. 抽象工厂模式(Abstract Factory) 3 3. 单例模式(Singleton) 4 4.建造者模式(Builder) 4 5. 原型模式...
Java设计模式实验门面模式和代理模式
12-23
这是设计模式实训教程(第2版)相关是课程实验,主要有两个实验门面和代理
Java设计模式》课程设计报告.docx
06-19
用myeclipse开发的java设计模式课程设计,课题内容为西瓜工厂,包含四个设计模式,单例模式、代理模式建造者模式和抽象工厂模式,有较好的图形界面,文档内附有完整代码,适用于新手学习。
java后端开发+java23种设计模式学习demo
07-05
结构型模式,共种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...
装饰模式代理模式的区别
jsy625的专栏
12-12 607
以下两个UML图分别描述了装饰模式代理模式的基本实现。 装饰模式 代理模式 相似点:对装饰器模式来说,装饰者(decorator)和被装饰者(decoratee)都实现同一个 接口。对代理模式来说,代理类(proxy class)和真实处理的类(real class)都实现同一个接口。此外,不论我们使用哪一个模式,都可以很容易地在真实对象的方法前面或者后面加上自定义的方
从Decorator,Adapter模式看Java/IO库(二)
贝高林的Blog
08-16 2635
 三 装饰模式的应用 学过装饰模式后,大家会发现,它在Java语言中最著名的应用莫过于Java I/O标准为库的设计了。这一节将以处理Byte流为例,看看装饰模式是怎样得到应用的。 为什么不用继承而用装饰模式  我们知道Java I/O库需要很多性能的各种组合,如果说这些性能的组合是通过继承方式来实现的话,那么每一种组合都需要一个类,这样就会出现大量重复性问题的出现,从而使类数目“爆炸
什么是装饰器模式和代理模式,以及它们之间的区别?
illovesoftware的博客
10-29 2636
一. 装饰器模式 概念:装饰器模式就是给一个对象动态的增加一些功能,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。 类结构图: 代码理解: 1.先定义一个抽象接口Sourceable package com.sjms.decorator; public interface Sourceable { //自定义抽象方法 void method(); } 2.定义一个实现类Source 实现抽象接口Sour...
设计模式-装饰器模式和代理模式的区别
漂亮男孩不说谎
08-17 304
设计模式
java常见设计模式
10-17
Java 常见设计模式有以下几种: 1. 工厂模式(Factory Pattern) 2. 单例模式(Singleton Pattern) 3. 建造者模式(Builder Pattern) 4. 原型模式(Prototype Pattern) 5. 适配器模式(Adapter Pattern) 6. ...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 在Edge浏览器中设置编码方式 19771
  • npm run dev/serve的区别,以及build和lint的作用 10435
  • 毕设(二)Spring Boot调用Python脚本运行 9670
  • 毕设(一)Vue3 + SpringBoot + MyBatis搭建一个简单前后端分离项目 7191
  • 获取VirtualBox COM对象失败,应用程序将被中断(The VBoxSDS windows service was not found) 6899

分类专栏

  • LayUI 2篇
  • 向量数据库 2篇
  • 飞桨 2篇
  • Java二阶知识点总结 9篇
  • Java一阶知识点总结 21篇
  • 小功能 19篇
  • 虚拟机部署问题 28篇
  • 问题集合 38篇
  • nginx 4篇
  • Redis 3篇
  • #vue3 15篇
  • 电力和地理相关知识学习笔记 2篇
  • SpringCloud学习笔记 6篇
  • svn问题集合 2篇
  • Java并发 2篇
  • 修复漏洞 4篇
  • Vue问题 3篇
  • 工作相关
  • 数据库问题 2篇
  • Mybatis 1篇
  • svn 1篇
  • 算法练习 18篇
  • 毕业设计 5篇
  • 面经 7篇
  • IDE问题 1篇
  • uni-app 5篇
  • 操作系统
  • SpringBoot学习 12篇
  • Vue.js 12篇
  • CSP认证练习 2篇

最新评论

  • 飞桨Ai(二)paddle使用CPU版本可以正常识别,切换为GPU版本时无法识别结果

    奥妙无穹: 数据量不大的情况下,差距不大

  • 部署问题集合(二十三)设置Docker容器内的中文字符集,解决某些情况下中文乱码的问题

    热心码民阿振: 发现一篇类似好帖子:https://blog.csdn.net/Da_zhenzai/article/details/128789341?spm=1001.2014.3001.5502

  • 部署问题集合(二十三)设置Docker容器内的中文字符集,解决某些情况下中文乱码的问题

    热心码民阿振: 质量很高,写的通俗易懂!表情包

  • 飞桨Ai(二)paddle使用CPU版本可以正常识别,切换为GPU版本时无法识别结果

    qq_44589685: 使用gpu 这个处理速度怎么样

  • 向量数据库(一)Milvus存储byte[]类型源向量数据

    普通网友: 支持一下,细节很到位!【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

大家在看

  • 文擎毕昇和Dify:大模型开发平台模式对比
  • CSS实现3D翻转卡牌效果
  • 【权威出版/稳定检索】2024年气象应用、勘查与灾害应急国际会议(AEMT 2024)
  • 有趣的算法题之字符串排序
  • 今年的就业到底有多难?你来看一下就知道了

最新文章

  • LayUI使用(二)处理表格会出现下拉框的问题
  • LayUI使用(一)点击树组件的右边空白区域也可响应事件
  • 向量数据库(二)Windows环境离线安装Faiss测试代码相关依赖
2024年18篇
2023年127篇
2022年69篇
2021年10篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

4617作文网白日做梦的解释金字起名有些什么周易 公司测名周易宝宝取什么名字女孩起名尹姓起名字慕什么周公解梦好多鱼给机械有限公司起名字搜索周公解梦大全周易八字名字取名字周易 网起名德字辈怎么起名字猪宝宝刘姓起名大全起名字五行缺火啊梦见自己大便是什么预兆解梦起测名打分1518精灵宝可梦go中国解锁易经周易起名八字排盘算命详解软件起名带水的字有哪些女孩属鼠人起名宜用哪些字左右校花梦工厂爆衣破解版日化品起名大全给公狗起名字沈怎么起名字女孩王姓女孩起名四字周易免费预测名字女孩姓卢起名大全周易算命卦亦字起名怎么样淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男子给前妻转账 现任妻子起诉要回网友建议重庆地铁不准乘客携带菜筐月嫂回应掌掴婴儿是在赶虫子重庆警方辟谣“男子杀人焚尸”国产伟哥去年销售近13亿新的一天从800个哈欠开始男孩疑遭霸凌 家长讨说法被踢出群高中生被打伤下体休学 邯郸通报男子持台球杆殴打2名女店员被抓19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警两大学生合买彩票中奖一人不认账德国打算提及普京时仅用姓名山西省委原副书记商黎光被逮捕武汉大学樱花即将进入盛花期今日春分张家界的山上“长”满了韩国人?特朗普谈“凯特王妃P图照”王树国3次鞠躬告别西交大师生白宫:哈马斯三号人物被杀代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了房客欠租失踪 房东直发愁倪萍分享减重40斤方法“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火手机成瘾是影响睡眠质量重要因素考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼网友洛杉矶偶遇贾玲呼北高速交通事故已致14人死亡西双版纳热带植物园回应蜉蝣大爆发男孩8年未见母亲被告知被遗忘张立群任西安交通大学校长恒大被罚41.75亿到底怎么缴沈阳一轿车冲入人行道致3死2伤奥运男篮美国塞尔维亚同组周杰伦一审败诉网易国标起草人:淀粉肠是低配版火腿肠外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万杨倩无缘巴黎奥运男子被猫抓伤后确诊“猫抓病”春分“立蛋”成功率更高?记者:伊万改变了国足氛围奥巴马现身唐宁街 黑色着装引猜测

4617作文网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化