IOS设计模式学习(16)装饰
来源:互联网 发布:脑死亡有奇迹吗 知乎 编辑:程序博客网 时间:2024/06/06 17:50
1 前言
在面向对象软件中,向对象添加“东西”(行为),而不破坏其原有风格,因此增强了的对象是同一个类的加强版。任何“增强”均可以动态添加和删除。我们把这个设计模式叫做“装饰”,装饰对象可以附加到另一个装饰对象,也可以附加到原始对象,对其功能进行扩展,同时保留原始行为不受影响。
2 详述
2.1 简述
动态的给一个对象太添加一些额外的职责。就扩展功能来说,装饰模式相比生成子类更为灵活。
2.2 何时使用
(1)想要在不影响其他对象的情况下,以动态,同名的方式给单个对象添加职责。
(2)想要扩展一个类的行为,却做不到。类定义可以被隐藏,无法进行子类化;或者,对累的每个行为的扩展,为支持每种功能组合,将产生大量的子类。
(3)对类的职责的扩展是可选的。
2.3 Objective-C范畴与装饰模式
范畴是一个Objective-C的语言功能,通过它可以向类添加行为(方法的接口与实现),而不必进行子类化。通过范畴添加的方法对类原有的方法没有不良影响。范畴中得方法成为了类的一部分,并可由其子类继承。
但这并不是一种严格的装饰模式的实现,它实现了模式的意图,但却是一种变体。由装饰器范畴添加的行为是编译时绑定的,虽然Objective-C原本支持动态绑定。而且装饰器范畴实际上没有封装被扩展类的实例。
但是事先少量的装饰器的时候,它比真正子类方式更为轻量,容易。
3 结语
以上是所有内容,希望对大家有所帮助。
- IOS设计模式学习(16)装饰
- 设计模式学习(三)---------装饰模式
- iOS 设计模式 - 装饰模式
- 【Python学习日记】【设计模式】装饰器(装饰模式)
- 设计模式学习--装饰
- 设计模式学习----装饰模式
- 设计模式学习-----装饰模式
- 学习设计模式--装饰模式
- 设计模式学习--装饰模式
- 设计模式学习--装饰模式
- 学习设计模式-装饰模式
- 设计模式学习:装饰模式
- IO学习(十六)装饰设计模式
- 装饰(包装)设计模式学习笔记
- iOS 设计模式之装饰模式(Decorator)
- 设计模式学习-Decorator(装饰)
- 设计模式学习---装饰者
- iOS与设计模式四:装饰模式
- window rsync server 安装使用
- iPhone KVO、KVC、KVB介绍
- Quartz CronTrigger最完整触发时间配置说明
- node to traverse cannot be null! -- hibernate
- Maven-6:问题:Unable to locate the Javac Compiler in:
- IOS设计模式学习(16)装饰
- 两台linux服务器拷贝文件
- java synchronized用法
- 目前遇到的c语言中非常用数据类型
- Eclipse配置NDK编译Android工程
- 7.3.(小学期第三套题)解题回顾与心得体会
- 百度地图 使用详解
- Cassandra启停工具
- SharePoint 企业搜索-PowerShell