潍坊市房屋和城乡建设局网站中国免费域名申请网站

张小明 2026/1/7 3:29:39
潍坊市房屋和城乡建设局网站,中国免费域名申请网站,中国世界500强企业排名,儿童玩具网站建设策划书文章目录 什么是装饰者模式装饰者模式中的角色抽象构件#xff08;Component#xff09;角色具体构件#xff08;Concrete Component#xff09;角色装饰#xff08;Decorator#xff09;角色具体装饰#xff08;Concrete Decorator#xff09;角色测试的时候到了尾声 …文章目录什么是装饰者模式装饰者模式中的角色抽象构件Component角色具体构件Concrete Component角色装饰Decorator角色具体装饰Concrete Decorator角色测试的时候到了尾声什么是装饰者模式网络百科如下装饰模式指的是在不必改变原类文件和使用继承的情况下动态地扩展一个对象的功能。它是通过创建一个包装对象也就是装饰来包裹真实的对象。设计模式和编程语言无关但是二当家的依然用Java语言去实战举例。装饰者模式中的角色抽象构件Component角色给出一个抽象接口以规范准备接收附加责任的对象。具体构件Concrete Component角色定义一个将要接收附加责任的类。装饰Decorator角色持有一个构件Component对象的实例并实现一个与抽象构件接口一致的接口。具体装饰Concrete Decorator角色负责给构件对象添加上附加的责任。抽象构件Component角色用动物接口作为抽象构件Component角色动物会移动和咬。package com.secondgod.decorator; /** * 动物 * * 抽象构件Component角色 * * author 二当家的白帽子 https://le-yi.blog.csdn.net/ */ public interface Animal { /** * 移动 */ void move(); /** * 咬你 */ void bite(); }具体构件Concrete Component角色用会跑会咬的狗狗类作为具体构件Concrete Component角色。package com.secondgod.decorator; /** * 狗 * * 具体构件Concrete Component角色 * * author 二当家的白帽子 https://le-yi.blog.csdn.net/ */ public class Dog implements Animal { Override public void move() { System.out.println(狗子跑起来吧。。。。。); } Override public void bite() { System.out.println(狗子生气了咬你。。。。。); } }装饰Decorator角色专门为动物设计了装备可热插拔牛得很。package com.secondgod.decorator; /** * 动物装备 * * 装饰Decorator角色 * * author 二当家的白帽子 https://le-yi.blog.csdn.net/ */ public abstract class AnimalEquipment implements Animal { private Animal animal; public AnimalEquipment(Animal animal) { this.animal animal; } Override public final void move() { beforeMove(); animal.move(); afterMove(); } Override public final void bite() { beforeBite(); animal.bite(); afterBite(); } /** * 移动前的能力增强 */ protected abstract void beforeMove(); /** * 移动后的能力增强 */ protected abstract void afterMove(); /** * 咬你前的能力增强 */ protected abstract void beforeBite(); /** * 咬你后的能力增强 */ protected abstract void afterBite(); }具体装饰Concrete Decorator角色觉得狗狗跑得有点慢于是设计了一件动物加速装备不要太先进哦。package com.secondgod.decorator; /** * 动物加速装备 * * 具体装饰Concrete Decorator角色 * * author 二当家的白帽子 https://le-yi.blog.csdn.net/ */ public class AnimalAcceleratorEquipment extends AnimalEquipment { public AnimalAcceleratorEquipment(Animal animal) { super(animal); } Override protected void beforeMove() { System.out.println(打开加速引擎。。。。。); } Override protected void afterMove() { System.out.println(关闭加速引擎。。。。。); } Override protected void beforeBite() { } Override protected void afterBite() { } }有的小动物会被大的动物欺负于是为他们设计一款攻击力增强装备来保护自己不要太猛哦。package com.secondgod.decorator; /** * 动物保护装备 * * 具体装饰Concrete Decorator角色 * * author 二当家的白帽子 https://le-yi.blog.csdn.net/ */ public class AnimalProtectionEquipment extends AnimalEquipment{ public AnimalProtectionEquipment(Animal animal) { super(animal); } Override protected void beforeMove() { } Override protected void afterMove() { } Override protected void beforeBite() { System.out.println(安装合金牙套。。。。。); } Override protected void afterBite() { System.out.println(取下合金牙套。。。。。); } }测试的时候到了package com.secondgod.decorator; public class Test { public static void main(String[] args) { System.out.println(一只善良小狗子散步中。。。。。); Animal animal new Dog(); System.out.println(一只凶猛大狗出现前来欺负善良小狗。。。。。); System.out.println(赶紧为善良小狗装上保护装备反击的时候到了。。。。。); animal new AnimalProtectionEquipment(animal); animal.bite(); System.out.println(糟糕了有点过了跑路吧小狗子移动太慢了装上加速装备。。。。。); animal new AnimalAcceleratorEquipment(animal); animal.move(); } }好了安全到家Nice。如果要是用继承的方式要多出来很多类加速不合金的狗子合金不加速的狗子又加速又合金的狗子以后可能还要有加速不合金的猫合金不加速的猫又加速又合金的猫。尾声为了更明确的说明装饰者模式不增加或减少行为而是行为的增强所以装饰角色使用抽象类并且是final方法来举例这样严格限制了具体装饰角色仅决定如何增强行为而不改变行为的多少。事实上装饰角色也可以是接口。装饰者模式太好用了热插拔你不用改变就让你的能力变强了。原文链接https://blog.csdn.net/leyi520/article/details/119964287© 著作权归作者所有,转载或内容合作请联系作者平台声明文章内容如有图片或视频亦包括在内由作者上传并发布文章内容仅代表作者本人观点简书系信息发布平台仅提供信息存储服务喜欢的朋友记得点赞、收藏、关注哦
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

新网互联的网站阿里巴巴电脑版登录入口

Windows Cleaner系统清理工具:简单三步让电脑重获新生 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为电脑C盘爆红、系统卡顿而烦恼吗&#xff…

张小明 2026/1/7 3:57:49 网站建设

医院网站建设利法拉网络专业网站推广引流

Docker Diff 比较文件变化:Miniconda-Python3.9 查看容器改动 在 AI 研究与数据科学项目中,一个常见的困扰是:为什么同样的代码,在同事的机器上跑得好好的,到了自己环境就报错?问题往往不在于代码本身&…

张小明 2026/1/7 3:57:51 网站建设

站长统计网站统计招聘平台

PaddlePaddle镜像中的增量学习功能应用场景探讨 在金融票据识别系统中,客户突然提出需要支持电子行程单的自动解析。这类需求变更在实际业务中屡见不鲜——模型刚上线不久,又要面对新增类别、新样式甚至全新语种的挑战。如果每次都要基于百万级历史数据重…

张小明 2026/1/7 3:57:50 网站建设

做外贸应该去什么网站企业信用信息公信系统官网

你是否曾担心过在知乎上精心创作的内容会突然消失?🤔 那些凝聚了你心血的技术分享、学术讨论和个人见解,都是珍贵的数字资源。现在,这款强大的知乎内容备份工具让你彻底告别知识丢失的烦恼! 【免费下载链接】zhihu_spi…

张小明 2026/1/7 3:57:57 网站建设

广州网站设计费用图片生成器在线

第一章:Open-AutoGLM适配失败的典型场景概述在实际部署与集成 Open-AutoGLM 模型过程中,开发者常因环境配置、接口兼容性或数据格式不匹配等问题遭遇适配失败。这些典型问题不仅影响开发效率,还可能导致推理服务中断或结果异常。了解常见失败…

张小明 2026/1/7 3:59:20 网站建设

公共资源交易中心职能苏州百度seo关键词优化市场

SQLite 日期 & 时间 SQLite 是一款轻量级的数据库,常用于存储轻量级数据,由于其易用性和轻量级特点,在移动应用和小型项目中非常受欢迎。在处理数据库时,日期和时间是一个重要的部分。本文将详细介绍 SQLite 中的日期和时间处理功能。 引言 在数据库中处理日期和时间…

张小明 2026/1/7 3:59:55 网站建设