打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
白话设计模式之装饰者模式

设计模式分为三大类型,一创建型,二结构型,三行为型.

而装饰者(decorator)模式是属于结构型的一种.

此模式主要的适应情况是:需要多种情况组合出现时.

也就是调用一个方法的时候,可能是ABC三个中的一种,也可能是他们的组合.

AB,AC,BC,AC等等.

 

如果听到类似的情形,需要组合多种情况出现的时候,就需要考虑到使用此种模式了.

这个模式顾名思义:就是装饰,一个本体可以有多种装饰物,多个装饰物用来修饰一个本体.

下面我们来举个小例子来加深下了解:

大致情况是:一家人在吃饭,小明的碗里只有白米饭,小明没有夹菜一直在吃白饭,爷爷看不下去了,

就给他夹了一块肉,妈妈也看不下去了,就给他夹了一块鱼,这个时候爸爸也看不下去了,光吃荤菜不行,

要荤素搭配呀,于是就给他夹了一根青菜.

在这个案例里,小明是一直没夹菜的,只顾自己吃饭.给他夹菜的是爸爸妈妈和爷爷.而这个夹菜的组合是

不固定的,可能都给他夹,也可能只有任何几个人夹菜,这样就动态给他增加了功能.

相关代码如下:

 

调用代码如下:

 

运行结果如下:

此模式的精要在于:

  1. 可以任意组合多种的情况,动态给类增加某种行为.
  2. 装饰者与被装饰者都需要有同样的继承体系,既继承自同一接口.(说白了,也就是让装饰工和他的子类可以接受被装饰者,可以将被装饰者的对象进行传递)
  3. 同一个实例传递到多个方法中对他进行处理
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
拍案叫絕外國老爸這樣回答孩子:小孩出生问题
【少儿慢速英语14】《I Help 我帮忙》
每日英语听力|走遍美国58
看外国老爸如何给他的孩子性教育
从0开始学架构——06复杂度来源——可扩展性
设计模式本质探讨
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服