22、设计模式之装饰者模式

xiaoxiao2025-04-30  14

抽象商品类

/** * 商品 */ public abstract class AbstractGoods { public abstract String getName() ; public abstract Double getPrice(); }

抽象装饰者包装类

/** * 抽象装饰者包装类 */ public abstract class AbstractGoodsDecorator extends AbstractGoods{ private AbstractGoods abstractGoods; public AbstractGoodsDecorator(AbstractGoods abstractGoods){ this.abstractGoods = abstractGoods; } @Override public String getName() { return this.abstractGoods.getName(); } @Override public Double getPrice() { return this.abstractGoods.getPrice(); } }

实体商品类

/** * 实体商品类 */ public class Goods extends AbstractGoods { @Override public String getName() { return "商品清单="; } @Override public Double getPrice() { return 0.0; } }

实体商品:蛋糕装饰者类

/** * 蛋糕 */ public class TakeDecorator extends AbstractGoodsDecorator { public TakeDecorator(AbstractGoods abstractGoods) { super(abstractGoods); } @Override public String getName() { return super.getName() + " 蛋糕"; } @Override public Double getPrice() { return super.getPrice() + 4.98; } }

实体商品:水装饰者类

/** * 水 */ public class WaterDecorator extends AbstractGoodsDecorator { public WaterDecorator(AbstractGoods abstractGoods) { super(abstractGoods); } @Override public String getName() { return super.getName() + " 水"; } @Override public Double getPrice() { return super.getPrice() + 2.5; } }

调用

public class Main { public static void main(String[] args) { AbstractGoods abstractGoods; // 商品清单 abstractGoods = new Goods(); // 蛋糕 abstractGoods = new TakeDecorator(abstractGoods); // 水 abstractGoods = new WaterDecorator(abstractGoods); // 水 abstractGoods = new WaterDecorator(abstractGoods); System.out.println(abstractGoods.getName() + " 总价:" + abstractGoods.getPrice()); } }

运行结果

商品清单= 蛋糕 水 水 总价:9.98

转载请注明原文地址: https://www.6miu.com/read-5029451.html

最新回复(0)