体系结构突击(装饰者模式)

体系结构突击(装饰者模式),第1张

体系结构突击(装饰者模式) uml图:

思路:

奶茶店有很多饮料可以抽象成Drink(名字,价格),然后每个饮料分别去实现这个抽象类,我们可以自己去加配料,比如布丁蓝莓。建立一个新的抽象类去继承Drink并声明一个Drink对象,然后通过新的抽象类decorater的实现类去装饰Drink,为Drink添加新的描述。

代码实现:
public abstract class Drink {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public abstract double getPrince();
}
public class Coffee extends Drink{
    Coffee(){
        setName("咖啡");
    }
    @Override
    public double getPrince() {
        return 8;
    }
}
public class Tea extends Drink{
    Tea(){
        setName("茶");
    }
    @Override
    public double getPrince() {
        return 5;
    }
}
public abstract class Condiment extends Drink{
    private String name;
}
public class Pudding extends Condiment{
    Drink drink ;

    public Pudding(Drink drink) {
        this.drink = drink;
    }

    @Override
    public double getPrince() {
        return 1+drink.getPrince();
    }

    @Override
    public String getName() {
        return "布丁"+drink.getName();
    }
}
public class BlueBerry extends Condiment{
    Drink drink ;

    public BlueBerry(Drink drink) {
        this.drink = drink;
    }

    @Override
    public String getName() {
        return "蓝莓"+drink.getName();
    }

    @Override
    public double getPrince() {
        return 1.5+drink.getPrince();
    }
}
public class client {
    public static void main(String[] args) {
        Drink s = new Coffee();
        s= new BlueBerry(s);
        s= new Pudding(s);
        System.out.println("你点的是"+s.getName()+" 价格是"+s.getPrince());
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5611737.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存