装饰者模式

2020-05-19  本文已影响0人  simplerandom

Component:装饰者和被装饰者共同的父类,是一个接口或者抽象类,用来定义基本行为
ConcreteComponent:定义具体对象,即被装饰者
Decorator:抽象装饰者,继承自Component,从外类来扩展ConcreteComponent。对于ConcreteComponent来说,不需要知道Decorator的存在,Decorator是一个接口或抽象类
ConcreteDecorator:具体装饰者,用于扩展ConcreteComponent

public abstract class TaoCan {
    public  abstract int getPrice();
    public abstract String getDesc();
}
public class HanBao extends TaoCan {
    @Override
    public int getPrice() {
        return 15;
    }

    @Override
    public String getDesc() {
        return "一个汉堡";
    }
}
public abstract class Decorator extends TaoCan {
}
public class KeLe extends Decorator {
    TaoCan taoCan;
    @Override
    public int getPrice() {
        return 6+taoCan.getPrice();
    }

    @Override
    public String getDesc() {
        return "可乐+"+taoCan.getDesc();
    }

    public KeLe(TaoCan taoCan) {
        this.taoCan = taoCan;
    }
}

测试
买两杯可乐一个汉堡

public class Test {
    public static void main(String[] args) {
        test(new KeLe(new KeLe(new HanBao())));
    }
    private static void test(Decorator deractor){
        System.out.println(deractor.getDesc());
        System.out.println(deractor.getPrice());
    }
}
上一篇 下一篇

猜你喜欢

热点阅读