装饰器设计模式代码套路-咖啡加奶
装饰器设计模式具体操作:
- 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
装饰器设计模式代码套路-咖啡加奶相关推荐
- lambda设计模式_使用lambda的装饰器设计模式
lambda设计模式 随着Java中lambda的出现,我们现在有了一个新工具,可以更好地设计我们的代码. 当然,第一步是使用流,方法引用和Java 8中引入的其他简洁功能. 展望未来,我认为下一步是 ...
- java设计模式之装饰模式_Java中的装饰器设计模式
java设计模式之装饰模式 装饰器设计模式允许在运行时将附加职责或行为动态附加到对象. 它是一种结构模式,利用聚合来组合这些行为. 在本教程中,我们将学习实现装饰器模式. UML图: 让我们从装饰器模 ...
- 装饰着模式示例_装饰器设计模式示例
装饰着模式示例 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要的原 ...
- Java中的装饰器设计模式
装饰器设计模式允许在运行时将附加职责或行为动态附加到对象. 它是一种结构模式,利用聚合来组合这些行为. 在本教程中,我们将学习实现装饰器模式. UML图: 让我们从装饰器模式的UML表示开始: Con ...
- 装饰器设计模式的应用
嗨,您好! 今天,我将展示装饰设计模式的实际应用. 装饰器设计模式是一种广泛使用的设计模式,同时在运行期间处理图形,树木和动态更改. 如果您正在寻找或尝试进行递归,这也是一个不错的选择. 我喜欢它. ...
- 用装饰器设计模式装饰
装饰图案是广泛使用的结构图案之一. 此模式在运行时动态更改对象的功能,而不会影响对象的现有功能. 简而言之,此模式通过包装将附加功能添加到对象. 问题陈述: 想像一下我们有一个比萨饼,该比萨饼已经用番 ...
- java学习--装饰器设计模式
装饰器设计模式 例一:实现对声音的的放大功能 源码: package me.sgyz.study02;/***实现放大器对声音的的放大功能* @ 洛尘曦**/public class Decorate ...
- 学习笔记:设计模式-装饰器设计模式(JAVA)
概念 装饰器设计模式,也叫包装设计模式,他是作为现有类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构. 给对象添加功能,一般两种方式,继承或者组合,将一个类的对象嵌入到另一个对象中, ...
- 装饰器设计模式--快餐店案例
装饰器设计模式–快餐店案例 某快餐店提供粉.面等各种快餐,顾客购买时可要求添加其它食物,例如加鸡蛋.加豆腐干.加猪脚等等,快餐店需计算快餐的总价,请用装饰器设计模式解决该问题. 快餐店提供的各种食品抽 ...
最新文章
- 简单介绍一下umask 命令使用方法
- @ResponseBody 和 @RequestBody 的作用
- 部署及配置Lync Server 2013存档功能
- 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s
- Android学习笔记---Android平台1.使用dom解析xml文件
- 剑指offer(C++)-JZ82:二叉树中和为某一值的路径(一)(数据结构-树)
- linux 析构函数地址获取_析构函数实现多态
- c语言程序运行的单词翻译,c语言常见英语词汇带翻译
- 计算机设备财产登记册,幼儿园财产登记制度
- DH算法 | Diffie-Hellman 密钥交换
- 百度世界推出“轻应用” :人人都可开发
- Verilog编写VGA控制器
- cocos creator 横版射击游戏全民吃鸡大战 H5+安卓+IOS三端源码
- HTML5表单验证required提示的中文设置为英文
- 喜欢你,三个星期了!
- androbench测存储速率
- 末尾运算符 ^和范围运算符 .
- NSWOJ-2412 - 没错,我就是马青!
- win10自动修复处理方法
- php xampp教程,xampp教程(一):xampp下载,安装,配置,运行PHP的web项目