MVC設計模式淺析

1.MVC是什麼?

MVC是Model-View-Controller(模型-視圖-控制器)的縮寫,是一種混合設計模式。用到這種設計模式時,我們所創建的對象要分爲:Model 對象,View對象和Controller對象。

歸類依據是:

Model對象:負責存儲數據以及定義如何操作這些數據。

View對象:負責展示而且允許用戶編輯來自應用程序的Model對象,View對象用來構建用戶界面,與用戶交互。

Controller對象:是Model對象與View對象的中間人,負責傳遞數據,監聽各種事件,管理其他對象的生命週期等。

上圖顯示的是應用程序響應用戶操作的一個流程。

打個比方:Controller對象好像是一家銷售公司,Model對象是產品提供者,View對象是銷售人員。公司賣什麼,銷售人員不用管,銷售人員是誰,產品提供者也無需管,公司管要賣什麼,管讓哪個銷售人員去賣。這樣一來,各個部分都做自己最擅長的事情,出問題了直接找對應環節,避免了混亂。產品提供者也可以提供產品給其他公司,銷售人員換個公司照樣能做銷售,公司也可以找其他產品提供者,聘用其他銷售人員,互相都弱依賴,誰離了誰都能活(當然了,這只是一種理想狀態,現實生活中有很多離開了某某某就失業就破產的人和公司)。

再看MVC設計模式,Model對象負責數據,很顯然,這裏的數據不僅僅可以用於某一個應用,View對象也可以直接拿到其他應用中去,Controller對象就更不用說了。實際上,蘋果就是這樣封裝的:比如UIButton,封裝了ImageView和Lable,ImageView顯示什麼圖片,Lable顯示什麼文字,這些不用UIButton管,它只知道自己可以顯示一張圖片和一段文字以及與用戶交互,其他的交給外界,你給啥圖片我顯示什麼圖片,你給啥文字我顯示什麼文字。這樣,UIButton纔可以重複使用。

綜上,MVC設計模式解決了對象間耦合問題,使得程序易於複用、擴展和變更。


2.如何使用MVC?

舉一個小案例:

很明顯這是一個TableView,要想展示數據,其Controller對象必須成爲其DataSource,遵守UITableViewDataSource協議並實現UITableViewDataSource方法,另外Controller對象還得擁有該TableView對象才能管理它。

接下來就是Model對象了:

Controller對象中預留了一個數據接口,用來從模型對象中取數據:

接下來Controller對象將數據傳遞給tableView:

以上便是一個應用程序利用MVC設計模式傳遞數據的基本流程。本程序利用的是UIKit框架自帶的tableViewCell中的一種,所有需要tableView的應用都可以使用,可見其複用性之好,當然了,我們也可以根據需要自定義cell。以後想要增刪顯示的英雄,直接增刪模型就行了,或者不想顯示英雄了,換個其他的,直接在Model中修改便可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章