装饰者模式和静态代理模式的相同
相同点
1.都要是实现目标接口
2.在两个类中都要实现目标对象
3.都可以在不改变目标类的前提下增强目标方法
不同点
1.目的不同
装饰者模式重在加强目标类的方法和功能
代理类重在保护目标类
2.获取目标对象的地点不同
装饰者是从外界传入的对象
代理模式是内部生成的对象


//装饰着模式
//抽象构建角色
public abstract class FastFood {private float price;private String desc;public FastFood(float price, String desc) {this.price = price;this.desc = desc;}public FastFood() {}public abstract float cost();public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}
}/*** 具体构建角色*/
public class FriedRice extends FastFood{public FriedRice(){super(10,"炒饭");}@Overridepublic float cost() {return getPrice();}
}public class FriedNoodle extends FastFood {public FriedNoodle(){super(12,"炒面");}@Overridepublic float cost() {return getPrice();}
}/*** 装饰着类*/
public abstract class Garnish extends FastFood {private FastFood fastFood;public FastFood getFastFood() {return fastFood;}public void setFastFood(FastFood fastFood) {this.fastFood = fastFood;}public Garnish( FastFood fastFood,float price, String desc) {super(price, desc);this.fastFood = fastFood;}public Garnish(FastFood fastFood) {this.fastFood = fastFood;}
}public class Egg extends Garnish {public Egg(FastFood fastFood){super(fastFood,1,"鸡蛋");}public static void main(String[] args) {FastFood friedRice = new FriedRice();System.out.println(friedRice.getDesc()+"价格为:"+friedRice.cost());friedRice=new Egg(friedRice);System.out.println(friedRice.getDesc()+"价格为:"+friedRice.cost());friedRice=new Egg(friedRice);System.out.println(friedRice.getDesc()+"价格为:"+friedRice.cost());}//加鸡蛋后的价格@Overridepublic float cost() {return getPrice()+getFastFood().cost();}@Overridepublic String getDesc() {return super.getDesc()+getFastFood().getDesc();}
}

射击末世--装饰者模式相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 《JavaScript设计模式与开发实践》模式篇(12)—— 装饰者模式

    在传统的面向对象语言中,给对象添加功能常常使用继承的方式,但是继承的方式并不灵活, 还会带来许多问题:一方面会导致超类和子类之间存在强耦合性,当超类改变时,子类也会随之 改变;另一方面,继承这种功能复 ...

  8. 3年工作必备 装饰器模式

    故事 古话说的好:人靠衣裳马靠鞍.下面先带大家来熟悉这句话的背景: 人靠衣装马靠鞍,狗配铃铛跑的欢出自沈自晋<望湖亭记>第十出:"虽然如此,佛靠金装,人靠衣装,打扮也是很要紧的. ...

  9. 装饰者模式 php,PHP设计模式之装饰器模式

    装饰器设计模式 什么是装饰器模式 装饰器模式就是对一个已有的结构增加装饰.装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象 ...

最新文章

  1. win7删除控制面板中的JAVA”
  2. java 语言概述(零)
  3. Flink On Yarn模式,为什么使用Flink On Yarn?Session模式、Per-Job模式、关闭yarn的内存检查,由Yarn模式切换回standalone模式时需要注意的点
  4. matlab ctrb(),4.8Matlab问题能控能观解释.ppt
  5. 浏览器中的JavaScript
  6. 搭建一款开源的微信商城小程序:海风小店
  7. 03-14 设备交互 API
  8. 在GridView中加入单选按钮RadioButton
  9. ai python 面试_面试分享系列 | 17道Python面试题,让你在求职中无往不利
  10. zabbix企业应用之固定端口监控memcache
  11. 开源GIS(二十)——CAD数据添加属性转GIS数据
  12. 9、从命令行运行postman脚本及生成测试报告
  13. xp系统支持的python版本_xp系统安装不上python
  14. 联想笔记本电脑BIOS中英文对照
  15. 【历史上的今天】11 月 28 日:中国顶级域名 CN 被注册;上世纪最大的论坛诞生;首个 Fortran 程序开发者逝世
  16. s3c2440存储控制器详解
  17. 红帽子linux9百度云,红帽 Red Hat Linux相关产品iso镜像下载【百度云】
  18. 纯电动汽车架构设计(一) :电动车架构设计核心与前悬架选择
  19. vip163邮箱手机版登陆入口是哪个?vip邮箱163实用技巧
  20. 告别高墙铁窗,AI或将终结传统监狱模式

热门文章

  1. iOS7到iOS8 一个通用的横竖屏幕切换总结
  2. 通过CMD命令重启服务器
  3. 重启服务器:docker重启,docker内部mysql怎么重启启动
  4. 【数智化案例展】某人民医院——智慧医疗大数据建设
  5. Codeforces 869E. The Untended Antiquity (二维Fenwick,Hash)
  6. 视频产生的本质及色彩空间:RGB 和 YUV
  7. 徐无忌MySQL笔记:MySQL数据库锁有几种?实现原理是什么?
  8. SoftWare Engineering -- WEEK.3
  9. 分享一个简单好看的科技公司官网模板-纯HTML+CSS
  10. c语言中反比例函数定义,初三数学反比例函数的定义知识点