当前位置: 首页 > wzjs >正文

企业网站首页图片霸榜seo

企业网站首页图片,霸榜seo,wordpress+修改邮箱设置,漯河市郾城区网站建设装饰器设计模式 🚩什么是装饰器设计模式?🚩装饰器设计模式的特点🚩装饰器设计模式的结构🚩装饰器设计模式的优缺点🚩装饰器设计模式的Java实现🚩代码总结🚩总结 🚩什么是…

装饰器设计模式

  • 🚩什么是装饰器设计模式?
  • 🚩装饰器设计模式的特点
  • 🚩装饰器设计模式的结构
  • 🚩装饰器设计模式的优缺点
  • 🚩装饰器设计模式的Java实现
  • 🚩代码总结
  • 🚩总结

🚩什么是装饰器设计模式?

装饰器设计模式(Decorator Pattern) 是一种 结构型设计模式,它允许你通过将对象放入 特殊封装对象 中来为原对象 动态添加新的行为。装饰器模式的核心思想是 在不改变原对象结构的情况下,扩展其功能

使用场景

  • 当需要 动态地添加或撤销对象的功能 时。

  • 继承不适合扩展功能 时(例如,子类数量爆炸或功能组合复杂)。

  • 当需要 为对象添加多个独立的功能,且这些功能可以自由组合时。

🚩装饰器设计模式的特点

  • 动态扩展:装饰器模式允许在运行时动态地为对象添加功能。

  • 灵活性:可以自由组合多个装饰器,实现功能的叠加。

  • 避免继承:通过组合替代继承,避免子类数量爆炸。

  • 透明性:装饰器对象与原对象具有相同的接口,客户端无需知道是否被装饰。

🚩装饰器设计模式的结构

装饰器模式主要包含以下部分:

  • Component(抽象组件):定义对象的接口,可以是抽象类或接口。

  • ConcreteComponent(具体组件):实现 Component 接口,是被装饰的原始对象。

  • Decorator(抽象装饰器):继承或实现 Component,并持有一个 Component 对象的引用。

  • ConcreteDecorator(具体装饰器):实现 Decorator,为 Component 添加新的行为。

图例:

在这里插入图片描述

🚩装饰器设计模式的优缺点

✅ 优点

  • 动态扩展:可以在运行时动态地为对象添加功能。

  • 灵活性:可以自由组合多个装饰器,实现功能的叠加。

  • 避免继承:通过组合替代继承,避免子类数量爆炸。

  • 透明性:装饰器对象与原对象具有相同的接口,客户端无需知道是否被装饰。

❌ 缺点

  • 复杂性:装饰器模式会增加系统的复杂性,尤其是在多层装饰时。

  • 调试困难:由于装饰器是动态添加的,调试时可能难以追踪具体的装饰逻辑。

🚩装饰器设计模式的Java实现

代码地址:GitHub

  • 创建 抽象组件 Person,定义对象的接口。
/*** @author hanson.huang* @version V1.0* @ClassName Person* @Description 抽象组件 Person* @date 2025/3/24 15:35**/
public abstract class Person {protected String name;public abstract void Operation();// 职责
}
  • 创建 具体组件 Student,实现 Person 接口。
/*** @author hanson.huang* @version V1.0* @ClassName Student* @Description 具体组件* @date 2025/3/24 15:41**/
public class Student extends Person {public Student(String name) {this.name = name;}@Overridepublic void Operation() {System.out.println(name + "的职责:学习 ");}
}
  • 创建 抽象装饰器 Decorator,继承 Person 并持有一个 Person 对象的引用
/*** @author hanson.huang* @version V1.0* @ClassName Decorator* @Description 抽象装饰器* @date 2025/3/24 15:42**/
public abstract class Decorator extends Person {protected Person person;
}
  • 创建 具体装饰器 DecoratorADecoratorB,分别实现新的行为。

    • DecoratorA
    /*** @author hanson.huang* @version V1.0* @ClassName DecoratorA* @Description 具体装饰器 DecoratorA* @date 2025/3/24 15:42**/
    public class DecoratorA extends Decorator {public DecoratorA(Person person) {this.person = person;}@Overridepublic void Operation() {// 职责person.Operation();// 原本的职责System.out.print("写作业 ");}
    }
    
    • DecoratorB
    /*** @author hanson.huang* @version V1.0* @ClassName DecoratorB* @Description 具体装饰器 DecoratorB* @date 2025/3/24 15:45**/
    public class DecoratorB extends Decorator {public DecoratorB(Person person) {this.person = person;}@Overridepublic void Operation() {// 职责person.Operation(); // 原本的职责System.out.print("考试 ");}
    }
    
  • 测试装饰器模式

/*** @author hanson.huang* @version V1.0* @ClassName DecoratorPattern* @Description 测试装饰器模式* @date 2025/3/24 15:46**/
public class DecoratorPattern {public static void main(String[] args) {Person zhangsan = new Student("张三");zhangsan= new DecoratorA(zhangsan);zhangsan= new DecoratorB(zhangsan);zhangsan.Operation();System.out.println("\n=====我是分割线=====");// 对象链Person lisi = new DecoratorB(new DecoratorA(new Student("李四")));lisi.Operation();}
}

📌 运行结果

在这里插入图片描述

🚩代码总结

  • 抽象组件 Person 定义对象的接口。

  • 具体组件 Student 实现 Person 接口,是被装饰的原始对象。

  • 抽象装饰器 Decorator 继承 Person 并持有一个 Person 对象的引用

  • 具体装饰器 DecoratorA 和 DecoratorB 分别实现新的行为。

  • 客户端 通过组合装饰器动态扩展对象的功能。

🚩总结

  • 装饰器设计模式(Decorator Pattern) 允许你通过将对象放入 特殊封装对象 中来为原对象 动态添加新的行为

  • 适用于 动态扩展对象功能避免继承导致的子类数量爆炸自由组合多个功能 的场景。

  • Java 实现 需要 定义抽象组件具体组件抽象装饰器具体装饰器,并通过组合方式动态扩展功能。

✅ 适用场景:

  • 需要 动态地添加或撤销对象的功能 时。

  • 继承不适合扩展功能 时。

  • 需要 为对象添加多个独立的功能,且这些功能可以自由组合时

  • Java中许多地方用到了装饰器模式,例如,I/O流中的InputStream就是抽象的基础组件,而,BufferedInputStreamDataInputStream 属于是装饰器类。Java的Collections 集合类Collections.synchronizedList 方法返回的列表是装饰后的组件,它具备了线程安全的特性

在这里插入图片描述

http://www.dtcms.com/wzjs/513174.html

相关文章:

  • 查询类网站怎么做百度关键词相关性优化软件
  • 国务院办公厅政府网站建设开发一个网站需要多少钱
  • 汉口网站建设公司沧州网站建设公司
  • 正规的淘宝代运营公司贵州百度seo整站优化
  • jsp网站制作详细教程百度关键词收录排名
  • 武汉网站建设 网站制作网站seo优化公司
  • 如何在服务器上放网站广州市口碑全网推广报价
  • php动态网站开发教程搜全网的浏览器
  • wordpress 首页代码seo下载站
  • 微信推广的好处seo是什么专业
  • 百度网页版登录入口官网烟台seo关键词排名
  • 公司网站建设总结刷移动端seo软件
  • 网站建设的企业目标今日足球比赛预测推荐分析
  • 什么是网站前置审批今日nba数据帝
  • 网站服务费怎么做分录百度关键词是怎么排名靠前
  • 零基础做地方门户网站河南网站推广电话
  • 怀化市住房和城乡建设局网站国内网络销售平台有哪些
  • 遵义网上办事大厅seo的最终是为了达到
  • 电子商务网站建设的开发方案网站竞价推广怎么做
  • 洛阳网站建设哪家好百度关键词推广条件
  • 网站建设门户百度首页登录官网
  • 一个在线做笔记的网站湖人今日排名最新
  • 商标注册网站缴费入口福州网seo
  • 整改网站建设情况北京网络优化
  • 换空间网站备案吗长尾关键词举例
  • 网站建设尾款收取长沙seo网站排名优化公司
  • 大型网站建站公司 上市惠州seo代理计费
  • 资产管理公司网站建设方案全自动推广软件
  • 网络推广和网站推广平台谷歌浏览器手机版官网下载
  • 做ppt网站网店推广策划方案