装饰器模式:动态的将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
意图:将一个接口转换为另一个接口
设计原则:开闭原则(对类的扩展开放,对修改关闭)
装饰器模式设计要点:
1.装饰者和被装饰对象有相同的超类型
2.可以用一个或者多个装饰者去包装一个对象
3.装饰者可以在所委托被装饰者的行为之前或者之后,加上自己的行为,已达到特定的目的
/** * Created by Administrator on 2017/12/10. * 饮料类 */ public abstract class Beverage { protected String desc; public String getDesc(){ return desc; } protected abstract double cost(); }
/** * Created by Administrator on 2017/12/10. * 调料装饰器 */ public abstract class CondimentDecorator extends Beverage{ public abstract String getDesc(); }
/** * Created by Administrator on 2017/12/10. *HouseBlend coffee */ public class HouseBlend extends Beverage { public HouseBlend() { desc = "houseBlend"; } @Override protected double cost() { return 10; } }
/** * Created by Administrator on 2017/12/10. * 用Mocha去装饰饮料 */ public class Mocha extends CondimentDecorator { private Beverage beverage; public Mocha(Beverage beverage) { this.beverage = beverage; } @Override public String getDesc() { return beverage.getDesc() + " Mocha "; } @Override protected double cost() { //可以在这里做一些事情 double price = 6; price = beverage.cost() + price; return price; } }
/** * Created by Administrator on 2017/12/10. */ public class TestDecorator { public static void main(String[] args) { Beverage beverage = new HouseBlend(); beverage = new Mocha(beverage); //用mocha去装饰coffee System.out.println(beverage.cost() + "," + beverage.getDesc()); beverage = new Mocha(beverage); //两次用Mocha去装饰coffee System.out.println(beverage.cost() + "," + beverage.getDesc()); } }
相关推荐
c++设计模式-结构型模式-装饰器模式;QT工程;c++简单源码; 装饰器(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。
设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式...
54-Spring设计模式之装饰器模式1
java常用设计模式-装饰器模式
ios平台中通过最简单的代码讲解装饰器模式,可在博客http://blog.sina.com.cn/s/blog_161d504630102wxis.html中查看简单解释
1.1 什么是设计模式 2 1.2 Smalltalk MVC 中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象...
《C++20设计模式》学习笔记-第9章装饰器模式-配套代码
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...
装饰器模式(Decorator Pattern)是结构型设计模式之一,用于动态地向对象添加额外的职责,而不影响其他对象。这种模式通过使用装饰器函数,允许你在保持原始功能的基础上,灵活地扩展代码的行为。
控制访问,装饰器设计的四个名词,装饰器模式与代理模式的区别,
装饰模式 PPT 前端 javascript 讲解了装饰模式在前端的运用,举例说明,ppt内的代码连起来可执行
装饰工程-装饰工程系统-装饰工程系统源码-装饰工程管理系统-装饰工程管理系统java代码-装饰工程系统设计与实现-基于springboot的装饰工程系统-基于Web的装饰工程系统设计与实现-装饰工程网站-装饰工程网站代码-装饰...
1.2 Smalltalk MVC中的设计模式 1.3 描述设计模式 1.4 设计模式的编目 1.5 组织编目 1.6 设计模式怎样解决设计问题 1.7 怎样选择设计模式 1.8 怎样使用设计模式 第二章 实例研究:设计一个文档编辑器 2.1 设计问题...
装饰器模式 适配器模式 桥接模式 外观模式 三、行为类 命令模式 访问者模式 责任链模式 备忘录模式 中介者模式 状态模式 模板方法模式 解释器模式 观察者模式 迭代器模式 策略模式 组合模式
装饰器模式,设计模式.
实现单例模式,组合模式,Builder模式,装饰器模式,并使用设计模式实现赌场
ios 平台实现设计模式-访问者模式,以最简单的代码实现访问者模式讲解,主旨在于了解访问者模式,博客:http://blog.sina.com.cn/s/blog_161d504630102wwxe.html