装饰器模式简单实例:从俄罗斯套娃到装饰器模式

装饰器模式实现的核心精髓在于套娃,把多态和继承玩出新花样。
每一次装饰都是往原对象身上套一层娃,这个娃可以是蓝色的绿色的,大的,小的。
俄罗斯套娃最里层是核心,你甚至可以不用娃,用其他东西替代。其余每一层的套娃都可以看做一类,作为装饰类。
我们先分析一下套娃是如何套的,再根据套娃的基本思路,来展开装饰器是如何实现的.

套娃的思路:
1.有一个娃准备被套
2.往这个娃上套娃,它变成一个新娃
3.重复2

可以看到,每套上一个娃,它就相当于成为了新的娃,准备被套。
由此引申到装饰器模式,每一次装饰生成一个新的组件,它准备被装饰。

装饰器模式实现思路:
1.有一个组件准备装饰
2.装饰类继承组件,构造传入组件类,利用多态将这个装饰类转换为新组件,直接进行一个娃的套
3.重复2

前述还是有些抽象,下面我们l利用实际例子分析分析,写下代码。
实例:我的手机是荣耀手机,我给这个手机买了钢化膜和手机壳,现在使用代码描述它们的关系。
分析:
我们需要有一个手机类,这个手机是荣耀手机。
而手机可以配上一些配件,如手机壳,钢化膜等。
由此,可以创出五个类:SmarthPhone,HonorPhone,Decorator,PhoneShell,ScreenProtector

package kisaragi.yu.decoratortest;

public abstract class SmartPhone {
   
    abstract String show();
}

package kisaragi.yu.decoratortest;

public class HonorPhone extends SmartPhone {
   
    @Override
    String sho
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值