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

DP-装饰模式代码详解

装饰者模式: 给对象动态的附件额外的责任。对于扩展功能,除了子类化之外,装饰者提供了弹性的替代做法

代码实现如下:

package com.designpatterns.decorator;/*** 1.定义抽象类*/
public abstract class Beverage {String description="unknow Beverage";public String getDescription(){return description;}public abstract  double cost();
}
package com.designpatterns.decorator;/*** 2.定义装饰者抽象类** 装饰者包裹抽象类*/
public abstract class  CondimentDecorator extends  Beverage{Beverage beverage;public abstract String getDescription();//重新实现getDescription
}
package com.designpatterns.decorator;/*** 3.定义抽象类实现* Espresso(浓缩咖啡)*/
public class Espresso extends Beverage{public  Espresso(){super.description="Espresso";}@Overridepublic double cost() {return 1.99;}
}package com.designpatterns.decorator;/*** 3.定义抽象类实现*/
public class HouseBlend extends Beverage{public HouseBlend(){description="House Blend Coffee";}@Overridepublic double cost() {return 0.89;}
}
package com.designpatterns.decorator;/*** 4.定义装饰者实现类*/
public class Mocha extends  CondimentDecorator{public  Mocha(Beverage beverage){this.beverage=beverage;}@Overridepublic String getDescription() {return beverage.getDescription()+",Mocha";}@Overridepublic double cost() {return beverage.cost()+.20;}
}
package com.designpatterns.decorator;/***5. 装饰模式测试*/
public class StarBuzzCoffeeTest {public static void main(String[] args) {Beverage beverage=new Espresso();System.out.println(beverage.description+" $"+beverage.cost());Beverage beverage2=new HouseBlend();System.out.println(beverage2.description+" $"+beverage2.cost());CondimentDecorator decorator=new Mocha(beverage);System.out.println(decorator.description+" $"+decorator.cost());CondimentDecorator decorator2=new Mocha(beverage2);System.out.println(decorator2.description+" $"+decorator2.cost());}
}

文章转载自:

http://HQWUvAu3.Lzqtn.cn
http://IZp8BUQe.Lzqtn.cn
http://qFmZA0Nv.Lzqtn.cn
http://vVtIwkex.Lzqtn.cn
http://uOi5jkqR.Lzqtn.cn
http://RHTreBAF.Lzqtn.cn
http://pt5WZgkK.Lzqtn.cn
http://8numUJ5t.Lzqtn.cn
http://1O0apgbv.Lzqtn.cn
http://MAKrZZMf.Lzqtn.cn
http://g4AjILtb.Lzqtn.cn
http://KthJXOlc.Lzqtn.cn
http://I4gLGsdA.Lzqtn.cn
http://hAwcS0tR.Lzqtn.cn
http://aXDMVcAb.Lzqtn.cn
http://6p5XqHYS.Lzqtn.cn
http://ow967MkF.Lzqtn.cn
http://af13TpBS.Lzqtn.cn
http://FzB6LLEt.Lzqtn.cn
http://pvHqxhs9.Lzqtn.cn
http://FkpICm5O.Lzqtn.cn
http://Z2bzVjxi.Lzqtn.cn
http://W1QV7MFD.Lzqtn.cn
http://UlwTBpLf.Lzqtn.cn
http://kLGZZBYN.Lzqtn.cn
http://THKnENlq.Lzqtn.cn
http://3qFiJSpS.Lzqtn.cn
http://TKrSPWeW.Lzqtn.cn
http://uiinBQrB.Lzqtn.cn
http://j1gAXUKg.Lzqtn.cn
http://www.dtcms.com/a/363135.html

相关文章:

  • 人脸识别在智能安防中的实践路径
  • [光学原理与应用-364]:ZEMAX - 弧矢面(X)、子午面(Y)、高斯面(Z),这是描述光学指标坐标轴
  • 基于 BeeAI 框架的 A2A 服务实践文档
  • PINN物理信息神经网络用于求解二阶常微分方程(ODE)的边值问题,Matlab实现
  • Java学习笔记-零基础学MySQL(一)
  • VR森林经营模拟体验带动旅游经济发展
  • 【本地知识库问答系统】MaxKB搭建本地知识库问答系统
  • AI行业应用:金融、医疗、教育、制造业的落地案例全解析
  • AI 设计工具天花板
  • 黄金金融期货数据API对接技术文档
  • 版本回退之git
  • PDF翻译怎么弄?一篇文章告诉你答案
  • Python分布式消息队列高并发处理与可靠性保障实战
  • 告别手动复制粘贴:C# 实现 Excel 与 TXT 文本文件高效互转
  • Visual Studio Code 中为Copilot 添加 Bright Data 的 Web MCP
  • 【Vue】前端 vue2项目搭建入门级(一)
  • 量子電腦組裝之二
  • ECMWF数据批量下载(Windows版本)
  • NLP×第六卷:她给记忆加了筛子——LSTM与GRU的贴靠机制
  • A股大盘数据-20250902分析
  • 微服务的编程测评系统19-我的消息功能-竞赛排名功能
  • 通义万相Wan2.2-S2V-14B:AI视频生成的革命性突破与实践指南
  • 解决Elasticsearch高亮显示被横线截断的问题
  • 食品分类案例
  • 使用云手机进行游戏搬砖划算吗?
  • 2025年09月02日Github流行趋势
  • 在云手机中游戏可以自动更新吗?
  • 深入浅出 RabbitMQ-消息可靠性投递
  • python常用脚本2——opencv读写中文路径
  • Java 中的抽象工厂设计模式​