装饰者模式(结构型)
来源:互联网 发布:数控编程培训班 编辑:程序博客网 时间:2024/05/19 20:20
装饰模式
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。
适用性
1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
2.处理那些可以撤消的职责。
3.当不能采用生成子类的方法进行扩充时。
结构类图
headfirst中实例类图
系统结构图
抽象组件类
public abstract class Beverage {public String desc="unKonw Coffee";public String getDesc(){return this.desc;}public abstract double cost();}
-------------------------------------------------------------
具体被装饰者类
public class DarkRoast extends Beverage{ public DarkRoast(){desc="DarkRoast";}@Overridepublic double cost() {// TODO Auto-generated method stubreturn 1;}}public class Decaf extends Beverage {public Decaf() {desc = "Decaf";}@Overridepublic double cost() {// TODO Auto-generated method stubreturn 2;}}public class Espresso extends Beverage {public Espresso() {desc = "Espresso";}@Overridepublic double cost() {// TODO Auto-generated method stubreturn 3;}}public class HouseBlend extends Beverage {public HouseBlend() {desc = "HouseBlend";}@Overridepublic double cost() {// TODO Auto-generated method stubreturn 4;}}
-----------------------------------------------------------------
具体装饰者类
public class Milk extends ConcreatDecorator{private Beverage beverage;public Milk(Beverage beverage){this.beverage=beverage;}@Overridepublic String getDesc() {// TODO Auto-generated method stubreturn beverage.getDesc()+",Milk";}@Overridepublic double cost() {// TODO Auto-generated method stubreturn this.beverage.cost()+1.5;}}public class Mocha extends ConcreatDecorator{private Beverage beverage;public Mocha(Beverage beverage){this.beverage=beverage;}@Overridepublic double cost() {// TODO Auto-generated method stubreturn this.beverage.cost()+0.5;}@Overridepublic String getDesc() {// TODO Auto-generated method stubreturn beverage.getDesc()+",Mocha";}}public class Soy extends ConcreatDecorator{private Beverage beverage;public Soy(Beverage beverage){this.beverage=beverage;}@Overridepublic String getDesc() {// TODO Auto-generated method stubreturn beverage.getDesc()+",Soy";}@Overridepublic double cost() {// TODO Auto-generated method stubreturn this.beverage.cost()+2.5;}}public class Whip extends ConcreatDecorator {private Beverage beverage;public Whip(Beverage beverage) {this.beverage = beverage;}@Overridepublic String getDesc() {// TODO Auto-generated method stubreturn beverage.getDesc()+",Whip";}@Overridepublic double cost() {// TODO Auto-generated method stubreturn this.beverage.cost() + 3.5;}}
-------------------------------------------------------------------------
抽像装饰者类
public abstract class ConcreatDecorator extends Beverage{public abstract String getDesc();}
--------------------------------------------------------------------
测试类
public class Test_c {public static void main(String[] args) {//创建具体的原料Beverage beverage =new DarkRoast();//不断的向源料上添加装饰beverage=new Milk(beverage);beverage=new Mocha(beverage);beverage=new Soy(beverage);beverage=new Whip(beverage);System.out.println(beverage.getDesc());System.out.println(beverage.cost());}}
0 0
- 结构型--装饰者模式
- 装饰者模式(结构型)
- 装饰者模式 - 结构型模式
- 结构型模式-装饰
- 结构型模式-装饰模式
- 结构型模式-装饰模式
- 关于装饰者模式(结构型)
- 7-结构型-装饰者模式
- 结构型-装饰者模式(decorator)
- 设计模式->结构型模式->装饰者模式
- Decorator装饰(结构型模式)
- 结构型模式-装饰模型
- 【结构型模式】decorator(装饰)
- 装饰模式(结构型)
- 结构型之装饰模式
- 结构型模式-装饰(decorator)
- 设计模式-结构型-装饰
- 设计模式 - 结构型模式 - 装饰模式
- php 通过PATH_SEPARATOR判断当前服务器系统类型
- 51nod 基础题小结
- 10.10
- matrix9
- 欢迎使用CSDN-markdown编辑器
- 装饰者模式(结构型)
- 全排列算法分析
- java实现二叉树的创建及5种遍历
- HTMl - 表格
- 路由算法的总结
- VS2008编译驱动程序的配置方法
- Activity的四种模式
- Linux Crontab 定时器 自动化运行程序 必备知识
- Arduino实例2-LED 闪烁实验