background image

iOS 的基本设计模式

    在 iOS 中有一些基本的设计模式:

    delegation
    protocol
    model-vew-controller
    target-action
    notification
    declared properties

    下面分别介绍一下各个设计模式的用途。

    Delegation

    这是 Apple 的权威解释。

    delegation,委托模式(另外有个常用的 proxy 模式,二者的区别是代理模式一般要更严
格,实现相同的接口,委托只是引用被委托对象),是简单的强大的模式,可让一个对象
扮演另外对象的行为。委托对象保持到另外对象的引用,并在适当的时候发消息给另外对象。
委托对象可以在发送消息的时候做一些额外的事情。

    在 cocoa 框架中的委托模式,委托对象往往是框架中的对象,被委托对象是自定义的
controller 对象。委托对象保持一个到被委托对象的弱引用。

    在该文档中所举的例子是 mac 下开发的示例。

    这里被委托对象是 NSWindow 类的一个实例,该类声明了协议(protocol),其中有个方
法 是

windowShouldClose , 当 用 户 点 击 窗 口 的 关 闭 按 钮 的 时 候 , 窗 口 对 象 将 发 送

windowShouldClose 消息给代理对象(windowDelegate),询问是否确认关闭窗口。代理对
象返回一个

bool 值,因此控制了窗口对象的行为。

    在 iOS 中也有类似的示例,在创建的项目中,classes 目录中会有 xxAppDelegate,这就是
委托类。在该委托类实例中,引用了

UIWindow 和 Controller。可以类似上面 mac 示例控制被

引用对象的行为。

    Protocol

    可以认为是 java 中的接口(interface)。在 iOS 中有两种 protocol: