装饰者模式和静态代理模式的相同
相同点
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. expec不管异常 try_python3基础之异常处理(通俗易懂)
  2. 移动端调试利器------微信开源项目
  3. Windows异常学习笔记(二)—— 内核异常处理流程用户异常的分发
  4. 2-21-源码编译安装LAMP
  5. Codeforce 322E Ciel the Commander (点分治)
  6. 10W+集群规模下,美团点评如何优化改造K8s?
  7. nasm纠正性训练指南pdf_PDF转word,一键转换?没有这么简单
  8. lstm原始论文_命名实体识别NER论文调研
  9. File类与FileInfo类
  10. ios 将随意对象存进数据库
  11. python里数字怎么表示_Python 中的数字—Python 学习笔记
  12. ionic3 图片(轮播)预览 ionic-gallary-modal组件使用方法
  13. 网页自动填表html,韶关网页自动填表基础教程从简单开始 - MutouSoft - 时间财富网...
  14. Learun快速开发平台,一个开源可视化的开发平台
  15. WGS84转GCj02
  16. android rar文件怎么打开方式,rar文件手机上怎么打开 手机怎么打开zip文件
  17. CSS3 设置网页黑白
  18. 学习|全屏时钟|计时器APP横评
  19. Android 科大讯飞语音评测SDK 踩坑实录
  20. Windows系统电脑常用快捷键

热门文章

  1. Netty诡异报错did not read anything but decoded a message
  2. 20条直播间行业术语给你总结好了
  3. EXCEL,筛选合并单元格后的全部内容
  4. 什么是Library
  5. 中年失业的处境有多艰难,成年人的生活不容易,且行且珍惜
  6. “互联网+”如何“+”纺织服装?
  7. prism在java_Prism 框架应用-基础知识篇
  8. 无状态,无连接的理解
  9. 风火编程--opencv使用记事
  10. 一个很好用的vue表单工具,快速进行表单开发