深入解析MVC模式:从响应链到数据模型与控制器
1. 响应链设计
响应链除了常见用途外,还用于翻译错误对象以及确定可用服务。在设计Cocoa应用程序时,响应链会深刻影响功能的实现方式和位置,以下是一些设计准则:
- 当菜单命令适用时,在响应链中的对象里实现菜单项操作;不适用时,则不在链中实现。
- 一般来说,操作应在涵盖操作领域的根对象中实现:
- 读写文档的命令应在文档对象中实现,而非窗口。
- 更改数据模型状态的操作应在控制器或数据模型对象中实现,而非视图。
- 视图应直接实现编辑操作,但最终更改应作为离散操作发送给控制器或数据模型。
- 即使在层次结构中逻辑正确的对象里实现目标操作会重复其他地方的功能,且只是向另一个对象发送单个消息,也应这样做,因为这比对抗响应链的组织方式更容易。
2. 数据模型
数据模型本质上是保存应用程序数据的任何对象。Cocoa应用程序中有四种常见的数据模型对象:传统表格和树数据源、集合控制器、Core Data对象和自定义类。
2.1 传统表格和树模型
Cocoa提供了将对象集合显示为表格和树的视图,这些视图可以与传统数据模型提供者交互,或绑定到NSObjectController对象。以下是Swing和Cocoa的等效视图和数据源类对比:
| Swing | Cocoa |
| — | — |
| javax.swing.JTable | NSTableView |
| javax.swing.table.TableModel | NSTableDataSource |
| javax.sw
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



