Java设计模式之装饰者模式

本文通过一个生动的例子——买花并对其进行装饰的过程,介绍了装饰者模式的概念及其应用。装饰者模式是一种设计模式,允许在不改变现有对象的情况下为其添加新的职责。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

装饰者模式在我理解就是对象功能的封装和传递的过程。
我们去花店买花送人的时候会首先选哪种花,比如送老婆选的红玫瑰,送妈妈的康乃馨等等,然后包装走人;如果你想送大一点的,那你就得买其他的去搭配,比如101朵玫瑰,外加一些荷兰百合,总之我们会买更多的花(在模式中我们认为有更多的操作)让它能够成为一束花,然后再选那种包装,不论哪种,最终我们得到的是带有包装的一朵花或者一束花。
我们把打成花束和包装都叫做装饰,让一朵花经过不断的包装能有不同的表现。

花有很多种,我们定义花的接口:
public interface 花{
public void printCurrentStatus();//这个接口是指这个花在当前时间的状态,是花? //还是花束?还是已经包装好了?
}


我们要买的玫瑰或者康乃馨:
public class 玫瑰 implements 花{
public void printCurrentStatus(){
System.out.println("选好一朵玫瑰花")
}
}



然后我们进行装饰,第一个装饰就是把花打花束:
public class 打成花束 implements 花{
private 花 object;

public 打成花束(花 object){
this.object = object;
}

public void printCurrentStatus(){
object.printCurrentStatus();
System.out.println("打好了花束");
}

}


下一个装饰是进行包装:
public class 包装 implements 花{
private 花 object;

public 包装(花 object){
this.object = object;
}

public void printCurrentStatus(){
object.printCurrentStatus();
System.out.println("打好了包装");
}

}

好了,在回顾一下我们买花的过程吧:
public static void main(String[] args){
花 花object = new 玫瑰();//选好的玫瑰
花object = new 包装(花object);//如果我们就买一支,那直接打包吧
花object.printCurrentStatus();//输出: 选好一朵玫瑰花
打好了包装

花 花object1 = new 玫瑰();//选好的玫瑰
花object1 = new 打成花束(花object1);//打成花束
花object1 = new 包装(花object1);//包装
花object1.printCurrentStatus();//输出什么呢?大家自己运行吧

}


示例可能没有那么贴切,但是要表达的意思是一致的,这样,花最终就得到了装饰后的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值