1.MVC是什么沪哺?
MVC是Model-View-Controller(模型-視圖-控制器)的縮寫,是一種混合設計模式梦碗。用到這種設計模式時香追,我們所創(chuàng)建的對象要分為:Model 對象诅蝶,View對象和Controller對象。
歸類依據是:
Model對象:負責存儲數據以及定義如何操作這些數據脆诉。
View對象:負責展示而且允許用戶編輯來自應用程序的Model對象扫尖,View對象用來構建用戶界面,與用戶交互禀综。
Controller對象:是Model對象與View對象的中間人简烘,負責傳遞數據,監(jiān)聽各種事件菇存,管理其他對象的生命周期等夸研。
上圖顯示的是應用程序響應用戶操作的一個流程亥至。
打個比方:Controller對象好像是一家銷售公司,Model對象是產品提供者贱迟,View對象是銷售人員姐扮。公司賣什么,銷售人員不用管衣吠,銷售人員是誰茶敏,產品提供者也無需管,公司管要賣什么缚俏,管讓哪個銷售人員去賣惊搏。這樣一來,各個部分都做自己最擅長的事情忧换,出問題了直接找對應環(huán)節(jié)恬惯,避免了混亂。產品提供者也可以提供產品給其他公司亚茬,銷售人員換個公司照樣能做銷售酪耳,公司也可以找其他產品提供者,聘用其他銷售人員刹缝,互相都弱依賴碗暗,誰離了誰都能活(當然了,這只是一種理想狀態(tài)梢夯,現實生活中有很多離開了某某某就失業(yè)就破產的人和公司)言疗。
再看MVC設計模式,Model對象負責數據厨疙,很顯然洲守,這里的數據不僅僅可以用于某一個應用疑务,View對象也可以直接拿到其他應用中去,Controller對象就更不用說了梗醇。實際上知允,蘋果就是這樣封裝的:比如UIButton,封裝了ImageView和Lable叙谨,ImageView顯示什么圖片温鸽,Lable顯示什么文字,這些不用UIButton管手负,它只知道自己可以顯示一張圖片和一段文字以及與用戶交互涤垫,其他的交給外界,你給啥圖片我顯示什么圖片竟终,你給啥文字我顯示什么文字蝠猬。這樣,UIButton才可以重復使用统捶。
綜上榆芦,MVC設計模式解決了對象間耦合問題,使得程序易于復用喘鸟、擴展和變更匆绣。
2.如何使用MVC?
舉一個小案例:
很明顯這是一個TableView什黑,要想展示數據崎淳,其Controller對象必須成為其DataSource,遵守UITableViewDataSource協(xié)議并實現UITableViewDataSource方法愕把,另外Controller對象還得擁有該TableView對象才能管理它拣凹。
接下來就是Model對象了:
Controller對象中預留了一個數據接口,用來從模型對象中取數據:
接下來Controller對象將數據傳遞給tableView:
以上便是一個應用程序利用MVC設計模式傳遞數據的基本流程恨豁。本程序利用的是UIKit框架自帶的tableViewCell中的一種咐鹤,所有需要tableView的應用都可以使用,可見其復用性之好圣絮,當然了,我們也可以根據需要自定義cell雕旨。以后想要增刪顯示的英雄扮匠,直接增刪模型就行了,或者不想顯示英雄了凡涩,換個其他的棒搜,直接在Model中修改便可。