package com.gk;
/**
* 装饰器设计模式
* @author GuoKe
*
*/
public class DecorateTest2 {
public static void main(String[] args) {
Coffee cf = new Coffee();
Drink mk = new Milk(cf);
System.out.println(mk.cost());
System.out.println(cf.cost());
}
}
interface Drink{//抽象组件
double cost();
}
class Coffee implements Drink{//具体组件:被修饰对象
public double cost() {
return 10;
}
}
abstract class Decorate implements Drink{
private Drink dr;
public Decorate(Drink dr) {//抽象装饰类:需构造抽象组件
this.dr = dr;
}
public double cost() {
return this.dr.cost();
}
}
class Milk extends Decorate{//具体装饰类
public Milk(Drink dr) {
super(dr);
}
public double cost() {
return super.cost()*2;
}
}
装饰器设计模式介绍
最新推荐文章于 2023-05-04 21:03:59 发布