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

晋江企业网站制作专业培训机构

晋江企业网站制作,专业培训机构,企业网站建设 总结,鄂尔多斯做网站Java 装饰器模式(Decorator Pattern)详解 🎁 什么是装饰器模式? 装饰器模式是一种结构型设计模式,允许向一个对象动态添加新的功能,而不改变其结构。 🧱 你可以想象成在原有功能上“包裹”一…

Java 装饰器模式(Decorator Pattern)详解

🎁 什么是装饰器模式?

装饰器模式是一种结构型设计模式,允许向一个对象动态添加新的功能,而不改变其结构。

🧱 你可以想象成在原有功能上“包裹”一层新功能,就像“套娃”或者“包礼物”。


🧠 使用场景

  • 需要在不修改类的情况下,扩展其功能
  • 需要动态地为对象添加功能
  • 多个类只有少量差异时,使用继承会导致类爆炸

🏗️ 模式结构

  • Component(抽象构件):定义对象接口
  • ConcreteComponent(具体构件):被装饰的原始对象
  • Decorator(装饰器抽象类):持有组件对象的引用,扩展功能
  • ConcreteDecorator(具体装饰器):实现具体增强功能

✅ 示例:咖啡加配料

抽象组件

public interface Coffee {String getDescription();double cost();
}

具体组件

public class SimpleCoffee implements Coffee {@Overridepublic String getDescription() {return "普通咖啡";}@Overridepublic double cost() {return 5.0;}
}

抽象装饰器

public abstract class CoffeeDecorator implements Coffee {protected Coffee decoratedCoffee;public CoffeeDecorator(Coffee coffee) {this.decoratedCoffee = coffee;}@Overridepublic String getDescription() {return decoratedCoffee.getDescription();}@Overridepublic double cost() {return decoratedCoffee.cost();}
}

具体装饰器:加牛奶

public class MilkDecorator extends CoffeeDecorator {public MilkDecorator(Coffee coffee) {super(coffee);}@Overridepublic String getDescription() {return super.getDescription() + " + 牛奶";}@Overridepublic double cost() {return super.cost() + 2.0;}
}

具体装饰器:加糖

public class SugarDecorator extends CoffeeDecorator {public SugarDecorator(Coffee coffee) {super(coffee);}@Overridepublic String getDescription() {return super.getDescription() + " + 糖";}@Overridepublic double cost() {return super.cost() + 1.0;}
}

客户端使用

public class Main {public static void main(String[] args) {Coffee coffee = new SimpleCoffee();coffee = new MilkDecorator(coffee);coffee = new SugarDecorator(coffee);System.out.println(coffee.getDescription() + ",价格:" + coffee.cost());}
}

🧩 优点

  • 灵活、可扩展性强,支持动态组合
  • 避免类继承造成的类爆炸
  • 满足开闭原则

⚠️ 缺点

  • 多层装饰器会增加系统复杂度,调试不易
  • 对象结构可能过于复杂,难以理解

✅ 使用建议

  • 当你希望在运行时增加对象行为,而不是通过继承
  • 多个类之间功能相似,可通过组合代替继承
http://www.dtcms.com/wzjs/153299.html

相关文章:

  • php动态网站开发 网站成品网站优化公司排名
  • 最新感染病毒seo建站是什么意思
  • 网站制作需求国外广告联盟平台
  • 重庆做网站开发的公司江苏百度推广代理商
  • cn域名网站河南郑州最新消息今天
  • 官网网站优化公司营销型网站方案
  • 网站建设消费调查问卷谷歌seo代运营
  • 锤子 网站 模版百度网络优化
  • 广州知名网站建设公司去哪里找需要推广的app
  • 设计网页通常用什么语言云优化
  • 怎么做网站的二维码老域名购买
  • 网站后台管理系统域名新媒体运营哪个培训机构好
  • 日本男女直接做的视频网站b2b关键词排名工具
  • wordpress新浪图床快速seo关键词优化方案
  • 在线免费设计logoseo是啥软件
  • 歪歪小站 wordpress怎么做个网站
  • 深圳燃气公司电话客服电话号码长沙网址seo
  • 网站服务搜索排名优化公司
  • 做暖暖免费网站网站免费高清素材软件
  • 小程序优点成都百度seo推广
  • 在线做数据图的网站建站平台哪个比较权威
  • 日照网站建设淘宝seo排名优化软件
  • 哪里网站建设联系方式北京网络营销公司排名
  • 网站建设推广优化公司优化大师安卓版
  • 企业网站报价表seo是一种利用搜索引擎的
  • 网站备案信息可以改吗b2b平台推广网站
  • 北京网站建设设计软文自助发布平台系统
  • 网站建设歺金手指排名13推广拉新app哪几个靠谱
  • 徐州铜山区百度人工优化
  • 英文网站制作 官网外贸seo是啥