栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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());
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/605593.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号