装饰者设计模式

装饰模式定义:

动态第给一个对象添加一些额外的职责。就扩展功能来说,装饰模式相比生成子类更为灵活。

何时使用装饰模式:

在以下3中常见的情形下,应该考虑使用这一模式。

  • 想要在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。

  • 想要扩展一个类的行为,却做不到。类定义可能被隐藏,无法进行子类化;或者,对类的每个行为的扩展,为支持每种功能组合,将产生大量的子类。

  • 对类的职责的扩展是可选的。

装饰者模式是向对象添加新的行为与职责的一种方式,它不改变任何现有行为与接口。

装饰模式总结:

我觉得装饰模式,是为已有功能动态的添加更多功能的一种方法。但是到底什么时候用它呢?

在本文的最初设计中,当系统需要添加新功能的时候,是
向旧的类中添加新的代码,这些新增的代码通常装饰了原有类的核心职能或主要行为。

这种设计方式问题在于,

他们在主类中增加了新的字段、新的方法、新的逻辑,从而增加了主类的负责度。而这些新加入的东西仅仅是为了满足一些在某种特定情况下才会执行的特殊行为的需求。

而装饰模式提供了一个非常好的解决方案,它把每个要装饰的功能放在单独的类中,并让这个类包含它所要装饰的对象,因此,当执行特殊行为时,在viewController里就可以根据需求有选择、按顺序的使用装饰功能包装对象了。

所以就有了上面的代码,我可以通过装饰,让person武装到牙齿,也可以只让他穿条内裤。

装饰模式的优点:
把类中的装饰功能从类中搬移出去,这样可以简化原有的类。
当有效的把类中的核心功能和装饰功能区分开了,可以去除相关类中重复的装饰逻辑。

屏幕快照 2016-10-27 上午11.06.01.png

还可以参考如下文章:
http://www.tuicool.com/articles/jyeU3mu
http://www.cnblogs.com/ziyi--caolu/p/4810339.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 4,081评论 1 15
  • 1 场景问题# 1.1 复杂的奖金计算## 考虑这样一个实际应用:就是如何实现灵活的奖金计算。 奖金计算是相对复杂...
    七寸知架构阅读 4,294评论 4 67
  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 4,080评论 3 14
  • 设计原则: 少用继承,多用组合 类应该对扩展开放,对修改关闭 目录 本文的结构如下: 什么是装饰者模式 为什么要用...
    w1992wishes阅读 1,291评论 0 7
  • /* * 当需要增强一个类的功能的时候,可以通过继承的方式来实现。这种方式代码结构清晰易于实现. * * 装饰者设...
    Michael_林阅读 203评论 0 0

友情链接更多精彩内容