现在的位置: 首页 > 综合 > 正文

IOS设计模式学习(16)装饰

2013年08月06日 ⁄ 综合 ⁄ 共 587字 ⁄ 字号 评论关闭

1 前言

在面向对象软件中,向对象添加“东西”(行为),而不破坏其原有风格,因此增强了的对象是同一个类的加强版。任何“增强”均可以动态添加和删除。我们把这个设计模式叫做“装饰”,装饰对象可以附加到另一个装饰对象,也可以附加到原始对象,对其功能进行扩展,同时保留原始行为不受影响。

2 详述

2.1 简述

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

2.2 何时使用

(1)想要在不影响其他对象的情况下,以动态,同名的方式给单个对象添加职责。

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

(3)对类的职责的扩展是可选的。

2.3 Objective-C范畴与装饰模式

范畴是一个Objective-C的语言功能,通过它可以向类添加行为(方法的接口与实现),而不必进行子类化。通过范畴添加的方法对类原有的方法没有不良影响。范畴中得方法成为了类的一部分,并可由其子类继承。

但这并不是一种严格的装饰模式的实现,它实现了模式的意图,但却是一种变体。由装饰器范畴添加的行为是编译时绑定的,虽然Objective-C原本支持动态绑定。而且装饰器范畴实际上没有封装被扩展类的实例。

但是事先少量的装饰器的时候,它比真正子类方式更为轻量,容易。

3 结语

以上是所有内容,希望对大家有所帮助。

抱歉!评论已关闭.