Cocoa Design Patterns 读书笔记 -- MVC 篇

I: One Pattern to Rule Them All
什么是 MVC?MVC 存在的意义以及它是如何被应用在 Cocoa Programing 中的。
1. Model View Controller
大多数的应用的职责和行为都是获取和存储信息并将之展示给用户,同时用户可以对此进行一系列操作。
因此在面向对象的模式中,可以将应用划分为以下子模块:
● Model
○ 用于提供和存储信息,它应该独立于和 View 或 Controller 没有任何关联。
● View
○ View 将 Model 的信息展示给用户并提供交互的能力。
● Controller
○ Controller 存在的目的是为了将 Model 和 View 进行解耦。
○ 用户和 View 的交互操作可能需要改变 Model 的数据,这依赖于 Controller 进行传递。
○ Controller 也负责数据处理和格式转换并将其传递给 View 以便展示给用户。
MVC 的主要目的就是将 Model 和 View 进行解耦,使得它们各自可以被独立的修改。
你可能会认为 Controller 的存在是多余的并增添了复杂性,毕竟 MVC 最终还是为了实现 Model 和 View 之间的信息流动。
那为什么还要引入 Controller 这样一层呢?这是因为相较 Model 而言,View 层由于用户的反馈和交互设计的更新,它更经常地会被修改设计;并且有时候我们也希望在修改 Model 设计时不要对 View 产生影响。因此使用 Controller 对 Model 和 View 进行了隔离。

MVC in Cocoa
Cocoa 是由 Model, View 和 Controller 组合在一起的:Core Data 被用于 Model 层的实现,Application Kit 中包含了 View 和 Controller 会用到的对象,而 Foundation 则提供了三者都会用到的类。但 Foundation 并不会直接提供 View 或 Controller 相关的特性,它提供系统服务相关的访问、NSObject 基类、脚本支持和其他一些用于实现的 Model, View 和 Controller 的特性。

Core Data Support for Model Subsystems
Core Data 致力于 Model 层的开发并解决两个重要问题:数据持久化及对象关系管理。
不同于二进制文件、文本文件或关系型数据库,Core Data 存储数据直接以对象的形式就行持久化并能维系对象之间的关系。同时 Core Data 背后的实现也支持三种形式——语义化的XML文件方便跨应用交换、二进制文件提供最高的读写性能和 SQLite 数据库。
Core Data 的引入抽象了数据存储的过程,使得你只需要关注 Model 的设计,同时也可以随时替换底层的存储方式。
Application Kit Support for View Subsystems

Application Kit Support for Controller Subsystems
Cocoa’s Text Architecture

Cocoa’s Document Architecture
Cocoa Scriptability
Cocoa’s Preference Pane Architecture
Quartz Composer’s Architecture
The QTKit Architecture
Summary
MVC 模式在应用间减少了耦合,但在某些情况下它也增加了复杂性。从长期回报来看,清晰的分层结构可以降低维护成本且提供更好的拓展性。
从另一个角度而言,Model 比起 UI 来总是更便于测试。其次,Model 和 UI 开发所需要的技能不同,MVC 也更利于团队的职责划分。
MVC 的局限性和适用性:更合适展示类、交互类的应用进行代码层次划分。
2. MVC Analyzed and Applied
提供了一个简单的薪资计算器 Demo non-MVC V.S MVC 版本(略)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值