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: