Objective-C 2.0 筆記 (7) MVC - Model View Controller 設計模式

Objective-C 2.0 筆記 (7) MVC - Model View Controller 設計模式,第1张

概述(1) iPhone 手机程式,可不可以有好几个 Window?   在参考一些技术文件后,发现每一支程式,只能有一个 Windows,但是可以有好几个 View(各种类别的 View),加到 Windows 内,成为 sub-view,而 Windows 本身也是一个 View,只是比较特别的,没有 parent,自己本身就是 root。   (2) MVC 设计模式,在 Cocoa Touch

(1) iPhone 手机程式,可不可以有好几个 Window?

 

在参考一些技术文件后,发现每一支程式,只能有一个 windows,但是可以有好几个 VIEw(各种类别的 VIEw),加到 windows 内,成为 sub-vIEw,而 windows 本身也是一个 VIEw,只是比较特别的,没有 parent,自己本身就是 root。

 

(2) MVC 设计模式,在 Cocoa touch SDK 里,应用的很普遍。

 

 

Model 主要用来管理资料跟状态,只管资料,而不管资料会以何种方法被呈现,通常也必须处理资料如何存取到硬碟上,相同的 Model 应该可以被重复使用,不需要修改界面。

 

VIEw 则是想办法把 Model 的资料,呈现给用户,包括视觉,声音,跟其他。VIEw 就只管如何呈现 Model 的资料就好。另外 VIEw 也可以提供用户输入界面,让用户可以 *** 作 Model 里的资料(透过 Controller),VIEw 自己是不存任何资料的。同样的,VIEw 应该设计成容易重复使用,而不需要修改界面。

 

Controller 则是介在 Model 跟 VIEw 之间,当 Model 资料改变时,负责更新 VIEw,当使用者透过 VIEw *** 作资料时,Controller 负责更新 Model 里的资料。

 

 

 

 

(3) 为何要用 MVC 设计模式?

 

首先,UIKit Framework 用 MVC 用的很广泛,如果希望写的程式,能够跟 UIKit 整合的很好,当然首选就是 MVC。这样做的好处很明显,你可以用 UI Builder 来设计你的 UI。

 

其次 MVC 将 Model 与 VIEw 分离,一开始的时候,会觉得多此一举,但当程式复杂到一定程度后,能够单独处理 Model 不管资料将如何被呈现,及单独处理 VIEw,而不用管资料是如何来的,能够大幅降低系统的复杂性。尤其是 UIKit Framework 又提供了许多常用的 VIEw 的类别。

 

(4) 一个简单的范例

 

 

 

上面这个简单的例子,就是之前看过,有ㄧ个 slIDer 跟一个 label,拖动 slIDer,slIDer 目前的数值就会显示在 label 上。

 

UI Builder 在这里帮了我们大忙,透过 UI Builder,我们可以把 vIEw 上的 slIDer 跟 label,指定给 controller 上的 outlet 变数 slIDer1 跟 label1,而 slIDer 被拖动时所发生的 event,也会指定给 controller 上的函式 updateValue。

 

有没有注意,我们完全不用管 vIEw,UI Builder 跟 UIKit Frame  一声不响,就帮你处理掉了,而 UI 相关的程式撰写,在以前,这部份是最琐碎繁复,没人想去写的部份。

 

(5) 那 Model 呢?不是 MVC,有 VIEw,有 Controller,那 Model (Data)呢?如果看到这里,你没有偷笑出来(心里想这个还需要问?),那表示你有过跟我一样的困惑,我可以告诉你答案,不过要 Charge $ 0.99。

 

未完,待续..........

总结

以上是内存溢出为你收集整理的Objective-C 2.0 筆記 (7) MVC - Model View Controller 設計模式全部内容,希望文章能够帮你解决Objective-C 2.0 筆記 (7) MVC - Model View Controller 設計模式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1068796.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存