装饰器设计模式具体操作:

  • 1、抽象组件:需要装饰的抽象对象(接口或抽象父类)
  • 2、具体组件:需要装饰的对象
  • 3、抽象装饰类:包含了对抽象组件的引用以及装饰着共有的方法
  • 4、具体装饰类:被装饰的对象

案例:咖啡加奶

  • 1、抽象组件:需要装饰的抽象对象(接口或抽象父类)
interface Drink {int cost();String info();
}
  • 2、具体组件:需要装饰的对象
class Coffee implements Drink {private int price = 20;private String name = "咖啡";@Overridepublic int cost() {return price;}@Overridepublic String info() {return name;}
}
  • 3、抽象装饰类:包含了对抽象组件的引用以及装饰着共有的方法
abstract class Decorate implements Drink {private Drink drink;public Decorate(Drink drink) {this.drink = drink;}@Overridepublic int cost() {return drink.cost();}@Overridepublic String info() {return drink.info();}
}
  • 4、具体装饰类:被装饰的对象
class Milk extends Decorate {public Milk(Drink drink) {super(drink);}@Overridepublic int cost() {return super.cost() + 10;}@Overridepublic String info() {return super.info() + "加牛奶";}
}class Sugar extends Decorate {public Sugar(Drink drink) {super(drink);}@Overridepublic int cost() {return super.cost() + 5;}@Overridepublic String info() {return super.info() + "加糖";}
}
  • 5、测试
 public static void main(String[] args) {Coffee coffee = new Coffee();System.out.println(coffee.info() + "--->" + coffee.cost());Milk milk = new Milk(coffee);System.out.println(milk.info() + "--->" + milk.cost());Sugar sugar = new Sugar(milk);System.out.println(sugar.info() + "--->" + sugar.cost());}
  • 6、输出

【参考】尚学堂Java300->08IO->180.mp4

装饰器设计模式代码套路-咖啡加奶相关推荐

  1. lambda设计模式_使用lambda的装饰器设计模式

    lambda设计模式 随着Java中lambda的出现,我们现在有了一个新工具,可以更好地设计我们的代码. 当然,第一步是使用流,方法引用和Java 8中引入的其他简洁功能. 展望未来,我认为下一步是 ...

  2. java设计模式之装饰模式_Java中的装饰器设计模式

    java设计模式之装饰模式 装饰器设计模式允许在运行时将附加职责或行为动态附加到对象. 它是一种结构模式,利用聚合来组合这些行为. 在本教程中,我们将学习实现装饰器模式. UML图: 让我们从装饰器模 ...

  3. 装饰着模式示例_装饰器设计模式示例

    装饰着模式示例 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要的原 ...

  4. Java中的装饰器设计模式

    装饰器设计模式允许在运行时将附加职责或行为动态附加到对象. 它是一种结构模式,利用聚合来组合这些行为. 在本教程中,我们将学习实现装饰器模式. UML图: 让我们从装饰器模式的UML表示开始: Con ...

  5. 装饰器设计模式的应用

    嗨,您好! 今天,我将展示装饰设计模式的实际应用. 装饰器设计模式是一种广泛使用的设计模式,同时在运行期间处理图形,树木和动态更改. 如果您正在寻找或尝试进行递归,这也是一个不错的选择. 我喜欢它. ...

  6. 用装饰器设计模式装饰

    装饰图案是广泛使用的结构图案之一. 此模式在运行时动态更改对象的功能,而不会影响对象的现有功能. 简而言之,此模式通过包装将附加功能添加到对象. 问题陈述: 想像一下我们有一个比萨饼,该比萨饼已经用番 ...

  7. java学习--装饰器设计模式

    装饰器设计模式 例一:实现对声音的的放大功能 源码: package me.sgyz.study02;/***实现放大器对声音的的放大功能* @ 洛尘曦**/public class Decorate ...

  8. 学习笔记:设计模式-装饰器设计模式(JAVA)

    概念 装饰器设计模式,也叫包装设计模式,他是作为现有类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构. 给对象添加功能,一般两种方式,继承或者组合,将一个类的对象嵌入到另一个对象中, ...

  9. 装饰器设计模式--快餐店案例

    装饰器设计模式–快餐店案例 某快餐店提供粉.面等各种快餐,顾客购买时可要求添加其它食物,例如加鸡蛋.加豆腐干.加猪脚等等,快餐店需计算快餐的总价,请用装饰器设计模式解决该问题. 快餐店提供的各种食品抽 ...

最新文章

  1. 简单介绍一下umask 命令使用方法
  2. @ResponseBody 和 @RequestBody 的作用
  3. 部署及配置Lync Server 2013存档功能
  4. 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s
  5. Android学习笔记---Android平台1.使用dom解析xml文件
  6. 剑指offer(C++)-JZ82:二叉树中和为某一值的路径(一)(数据结构-树)
  7. linux 析构函数地址获取_析构函数实现多态
  8. c语言程序运行的单词翻译,c语言常见英语词汇带翻译
  9. 计算机设备财产登记册,幼儿园财产登记制度
  10. DH算法 | Diffie-Hellman 密钥交换
  11. 百度世界推出“轻应用” :人人都可开发
  12. Verilog编写VGA控制器
  13. cocos creator 横版射击游戏全民吃鸡大战 H5+安卓+IOS三端源码
  14. HTML5表单验证required提示的中文设置为英文
  15. 喜欢你,三个星期了!
  16. androbench测存储速率
  17. 末尾运算符 ^和范围运算符 .
  18. NSWOJ-2412 - 没错,我就是马青!
  19. win10自动修复处理方法
  20. php xampp教程,xampp教程(一):xampp下载,安装,配置,运行PHP的web项目

热门文章

  1. 针对WEB服务器的攻击途径和防范措施
  2. Python 面向对象 --- 多态
  3. 为什么iPhone通常比Android具有更好的音质?
  4. python 接口自动化unittest+DingtalkChatbot钉钉机器人消息封装
  5. MTK-如何解锁OEM
  6. 什么是语音通知 / 语音短信 / 语音外呼?
  7. 第23课:专项能力修炼
  8. Docker部署Flask网站
  9. 什么是交换机?什么是路由器?网络通信的底层原理到底是怎么回事?不清楚的程序猿快来科普下吧!
  10. android 翻页动态效果,Android 实现翻书的动画效果