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

来源:未知 责任编辑:责任编辑 发表时间:2014-05-10 12:18 点击:

1 前言

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

2 详述

2.1 简述

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

2.2 何时使用

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

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

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

2.3 Objective-C范畴与装饰模式

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

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

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

3 结语

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

 

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Lexical or Preprocessor Issue 'xxx.h
    • ios学习笔记(二)xcode 4.3.2下实现基本交互
    • ios版本的helloworld
    • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
    • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
    • UITableView一些方法
    • IOS类似iphone通讯录TableView的完整demo【附源码】
    • [iPhone中级]iPhone团购信息客户端的开发 (二)
    • iphone(object-c)内存管理(1)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1