uml图:

思路:

奶茶店有很多饮料可以抽象成Drink(名字,价格),然后每个饮料分别去实现这个抽象类,我们可以自己去加配料,比如布丁,蓝莓。建立一个新的抽象类去继承Drink并声明一个Drink对象,然后通过新的抽象类decorater的实现类去装饰Drink,为Drink添加新的描述。

代码实现:

public abstract class Drink {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public abstract double getPrince();
}
public class Coffee extends Drink{Coffee(){setName("咖啡");}@Overridepublic double getPrince() {return 8;}
}
public class Tea extends Drink{Tea(){setName("茶");}@Overridepublic double getPrince() {return 5;}
}
public abstract class Condiment extends Drink{private String name;
}
public class Pudding extends Condiment{Drink drink ;public Pudding(Drink drink) {this.drink = drink;}@Overridepublic double getPrince() {return 1+drink.getPrince();}@Overridepublic String getName() {return "布丁"+drink.getName();}
}
public class BlueBerry extends Condiment{Drink drink ;public BlueBerry(Drink drink) {this.drink = drink;}@Overridepublic String getName() {return "蓝莓"+drink.getName();}@Overridepublic double getPrince() {return 1.5+drink.getPrince();}
}
public class client {public static void main(String[] args) {Drink s = new Coffee();s= new BlueBerry(s);s= new Pudding(s);System.out.println("你点的是"+s.getName()+" 价格是"+s.getPrince());}
}

体系结构突击(装饰者模式)相关推荐

  1. 软件体系结构--装饰器模式

    文章目录 概念 例子 分析 总结 概念 装饰器模式可以动态地将一些属性.能力添加到一个对象上.若要扩展功能,装饰器提供了比继承更具有弹性的方式. 装饰器模式类图: 例子 如果大家看过变形金刚2,应该还 ...

  2. Java设计模式12:装饰器模式

    装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...

  3. java中装饰器_Java设计模式12:装饰器模式

    装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...

  4. 设计模式(三)—— 装饰者模式

    由于之前看的容易忘记,因此特记录下来,以便学习总结与更好理解,该系列博文也是第一次记录,所有有好多不完善之处请见谅与留言指出,如果有幸大家看到该博文,希望报以参考目的看浏览,如有错误之处,谢谢大家指出 ...

  5. java设计模式----装饰器模式

    Decorator装饰器,顾名思义,就是动态地给一个对象添加一些额外的职责,就好比为房子进行装修一样.因此,装饰器模式具有如下的特征: 它必须具有一个装饰的对象. 它必须拥有与被装饰对象相同的接口. ...

  6. Android 设计模式:(三)装饰者模式 —— 装饰对象

    *利用组合(composition)和委托(delegation)可以在运行时实现继承行为的效果,动态地给对象加上新的行为. *利用继承扩展子类的行为,是在编译时静态决定的:利用组合的做法,可以在运行 ...

  7. java I/O之装饰者模式

    装饰者: Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案. 装饰者模式意图: 动态的给一个对象添加额外的职责.Decorato ...

  8. 如何利用装饰者模式在不改变原有对象的基础上扩展功能

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:双子孤狼 blog.csdn.net/zwx9001 ...

  9. 这是我见过最通俗易懂的 装饰者模式 讲解了!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:lewis0077 cnblogs.com/lewis007 ...

  10. Python设计模式-装饰器模式

    Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...

最新文章

  1. 快速解决正则----模糊匹配、字符类、量词
  2. linux中wps默认安装目录,centos6.5 安装wps linux
  3. 超详细Ubuntu Linux安装配置 Tomcat
  4. java调用存储过程同时获取[返回参数]和[结果集]
  5. 读取文件中的文本并返回字符串
  6. 彻底理解SESSION
  7. C#高级编程----反射的小结
  8. 制作效果远超CHM的帮助文档制作软件,速看!
  9. 音视频入门系列-字幕篇(SSA ASS)
  10. 应聘软件测试岗位需要掌握的基础知识与技能(面试常考内容)
  11. Leetcode. Largest Rectangle in Histogram
  12. 归一化MinMaxScaler()、标准化StandardScaler()(特征工程之特征预处理)
  13. 【已解决替代Google英文网页翻译】英文网页翻译成中文(不用额外的插件解决方法)
  14. Android如何快速创建启动动画
  15. SparkSQL专题1 ~ 造数
  16. 计算机私密相册安全吗,一张照片竟能泄露这么多隐私?这个功能不可不知
  17. Mac OS X 系统清理
  18. 十大著名的思想实验(程序员应该会读喜欢这些)
  19. 好口才是练出来的:练胆量、练技巧、练修养
  20. Excel到期提醒制作

热门文章

  1. c语言下标法改为指针变量法,C语言教材第七章指针实验.doc
  2. python线上培训考级
  3. js获取audio语音时长
  4. 计算机连接公用网络设置路由器,win7隐藏功能让你的电脑共享上网变无线路由器...
  5. dhcp服务器在哪个位置,dhcp服务器是什么 dhcp服务器怎么设置【步骤教程】
  6. 计算机英语个人陈述,美国留学关于计算机的个人陈述英文范文怎么写?
  7. 【Linux常见指令】
  8. 小米手机屏幕时间管理怎么关闭(步骤分享)
  9. 2022蓝桥杯学习——4.枚举、模拟与排序
  10. lumia 525 android 7.1,惊呆!WP老爷机Lumia 520可流畅运行安卓7.1