装饰器模式是一种结构型设计模式,允许动态添加对象功能,无需修改原始类。它通过抽象组件、具体组件、抽象装饰器和具体装饰器的协作实现,可以灵活扩展类功能,满足变化的需求。示例中,将牛奶和摩卡装饰器添加到espresso,总价为2.29美元,展示了装饰器模式在动态修改对象行为方面的强大功能。

Java 设计模式之装饰器模式剖析
引言
装饰器模式是一种结构型设计模式,它允许动态地将功能添加到对象上,而无需修改其基础类。通过使用装饰器对象,可以灵活地扩展类功能,满足不断变化的需求。
立即学习“Java免费学习笔记(深入)”;
原理
装饰器模式通过以下方式工作:
代码示例
// 抽象组件
interface Beverage {
double cost();
}
// 具体组件
class Espresso implements Beverage {
@Override
public double cost() {
return 1.99;
}
}
// 抽象装饰器
abstract class CondimentDecorator implements Beverage {
protected Beverage beverage;
public CondimentDecorator(Beverage beverage) {
this.beverage = beverage;
}
}
// 具体装饰器
class Milk extends CondimentDecorator {
public Milk(Beverage beverage) {
super(beverage);
}
@Override
public double cost() {
return beverage.cost() + 0.10;
}
}
// 具体装饰器
class Mocha extends CondimentDecorator {
public Mocha(Beverage beverage) {
super(beverage);
}
@Override
public double cost() {
return beverage.cost() + 0.20;
}
}
// 实战案例
public class CoffeeShop {
public static void main(String[] args) {
Beverage espresso = new Espresso();
// 添加牛奶和摩卡装饰器
Beverage milkEspresso = new Milk(espresso);
Beverage mochaMilkEspresso = new Mocha(milkEspresso);
// 计算饮料总价
double totalCost = mochaMilkEspresso.cost();
System.out.println("Beverage cost: " + totalCost);
}
}输出:
Beverage cost: 2.29
结论
装饰器模式可用于在不修改现有代码的情况下动态扩展对象功能。它提供了一种灵活而优雅的方式来满足不断变化的需求,同时保持代码的可维护性和可扩展性。
以上就是Java设计模式之装饰器模式剖析的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号