设计模式之——装饰者模式

一、装饰者模式

 装饰者模式又称为包装模式。

动态地给一个对象增加新的职责。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

装饰者模式顾名思义就是对一个对象进行装饰,具体怎样装饰呢?那就是给这个对象不断的增加职责方法。给一个对象增加方法不简单啊,用继承或者直接在对象的类中增加方法。如果我们要对自己的手机进行装饰,今天给手机增加一个挂件,明天给手机贴膜,下个月给手机增加一个保护套,后面说不定还要给手机在装扮一下...。这种场景下,我们直接用在对象的类中增加方法,后面我们会发现这样改下去,不仅这个类很庞大,而且改一处好多地方都要动。最重要的一点这样的修改违反了开放——封闭原则。

二、装饰者模式UML图

1.装饰者模式的职责角色:

   1)    抽象构建角色(Component):

             给出一个抽象的接口,以规范准备接受附加责任的对象。可以理解为要被装饰的抽象对象。

   2)    具体的构建角色(ConcreteComponent):

            定义一个将要接受附加责任的类。可以理解为要被装饰的具体对象。

   3)    装饰角色(Docorator):

            持有一个抽象构建(Component)角色的引用,并定义一个与抽象构件一致的接口。

    4)    具体的装饰角色(ConcreteDecorator):

            负责给构建对象“贴上”附加的责任。

2 UML图:

 我以手机增加挂件装饰为例,讲解装饰者模式。如下UML图所示,手机是我们要装饰的抽象对象,具体的手机装饰对象为:ApplePhone和HTCPhone。装饰的物品为卡通挂件和金属挂件。

三、代码实现

1.抽象构建角色接口定义:

2 具体的构建角色:

3 装饰角色:

4 具体的装饰:

5 客户端调用:

 

装饰者模式到此讲解完了,这样一来我们后面要给手机增加别的装饰品或者增加别的品牌手机时,只需实现相应的接口。从而可以动态的增加挂件或者手机类型。如果大家有什么见解,欢迎讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值