Using Design Patterns

使用设计模式


设计模式解决通用软件工程问题。模式是抽象设计,没有代码。当你采用设计时,你是使用通用模式到你的特殊需求中区。不管你创建何种类型的app,都应该很好的知道框架中采用的基本设计模式。理解设计模式帮助你高效的使用框架,并且允许你编写更加可复用性、更加可扩展性和更加灵活的app。



MVC

模型视图控制器 (MVC)是所有iOS app良好设计的核心。MVC把在app中的对象分为三种角色:模型、视图、和控制器。在这个模式中,模型与app的数据保持联系,视图显示你的用户界面并组成app的内容,控制器管理你的视图。通过响应用户的动作和使用内容填充视图,控制器承担起了模型和视图之间通信的功能。


当你在建立ToDoList app的时候,你是跟随着以MVC为核心的设计。你在故事板中建立的界面组成视图层。XYZAddToDoItemViewControllerXYZToDoListViewController是控制器管理你的视图。在Tutorial: Add Data中,你将合并数据来为app中的视图和控制器工作。当你开始设计你自己的app的时候,在你的设计中保持MVC的核心位置是非常重要的。


Target-Action

目标-动作

目标-动作 是一个简单概念的设计模式,它在特定事件发生时,由一个对象发送消息到另一个对象。动作消息是一个在源代码中定义的选择器,而目标——接收消息的对象——是有能力执行动作的对象,通常是一个视图控制器。用作发送动作消息的对象是控件——例如按钮、滑块、开关——他们能触发一个事件来响应用户的交互,例如轻拍、拖拽或者值改变。

例如,想象你想要在你的app中恢复默认设置,用户就轻拍Restore Defaults按钮(在你的用户界面创建)。首先,你实现一个动作,restoreDefaults:,来实现恢复默认设置。然后,你注册按钮的Touch Up Inside事件到restoreDefaults:发送动作方法到视图控制器来实现该方法。



你已经在ToDoList app中使用了目标-动作模式。当用户轻拍XYZAddToDoItemViewController中的Done按钮的时候,它的触发的是unwindToList动作。在这种情况下,Done按钮是发送消息的对象,目标对象是XYZToDoListViewController,动作消息是unwindToList,这个事件触发动作消息被发送是用户轻拍了Done按钮。目标-动作模式是一个app中的不同部分定义交互并发送消息的强大的机制。


Delegation

委托模式

Delegation委托 is a simple and powerful pattern in which one object in an app acts on behalf of, or in coordination with, another object. The delegating object keeps a reference to the other object—the delegate—and at the appropriate time sends a message to it. The message informs the delegate of an event that the delegating object is about to handle or has just handled. The delegate may respond to the message by updating the appearance (or state) of itself or of other objects in the app, and in some cases it will return a value that affects how an impending event is handled.


委托设计模式在框架类中普遍存在,但你也能在两个自定义的对象中实现代理。常见的设计使用委托意味着允许子视图控制器与父视图控制器要进行值(通常是用户输入的值)的交流。

你还不能使用代理模式,但在Tutorial: Add Data中,当你添加额外的行为到你的XYZToDoListViewController类中时,你将看到一个它的例子

这些都是一些常用的设计模式,你将在iOS开发中遇到他们,但还有更多的。当你学习更多的关于Objective-C的知识的时候,你将发现你能使用其他的设计模式到你的app中。

Incorporating the Data

Working with Foundation

Copyright 2014 Apple Inc. All rights reserved. Terms of Use | Privacy Policy | Updated: 2013-10-22