MVC (Model-View-Controller):M是指邏輯模型,V是指視圖模型,C則是控制器。一個(gè)邏輯模型M可以對于多種視圖模型V,比如一批統(tǒng)計(jì)數(shù)據(jù)你可以分別用柱狀圖、餅圖V來表示。一種視圖模型V也可以對于多種邏輯模型M。使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離,從而使同一個(gè)程序可以使用不同的表現(xiàn)形式,而C存在的目的則是確保M和V的同步,一旦M改變,V應(yīng)該同步更新,這與《設(shè)計(jì)模式》中的觀察者模式是完全一樣。
MVC好處:MVC把應(yīng)用程序的邏輯層與界面是完全分開的,大的好處是:界面設(shè)計(jì)人員可以直接參與到界面開發(fā),程序員就可以把精力放在邏輯層上。而不是像以前那樣,設(shè)計(jì)人員把所有的材料交給開發(fā)人員,由開發(fā)人員來實(shí)現(xiàn)界面。在Eclipes工具中開發(fā)Android采用了更加簡單的方法,設(shè)計(jì)人員在AnroidDraw中設(shè)計(jì)界面,以XML方式保存,在Eclipes中直接打開就可以看到設(shè)計(jì)人員設(shè)計(jì)的界面。邏輯處理的代碼則放在src文件夾下。讓程序員更專注與業(yè)務(wù)。
Android中界面部分也采用了當(dāng)前比較流行的MVC框架,在Android中:
1) 視圖層(View):一般采用XML文件進(jìn)行界面的描述,使用的時(shí)候可以非常方便的引入。
同時(shí)便于后期界面的修改。邏輯中與界面對應(yīng)的id不變化則代碼不用修改,大大增強(qiáng)了代碼的可維護(hù)性。
2) 控制層(Controller):Android的控制層的重任通常落在了眾多的Acitvity的肩上,這句話也就暗含了不要在Acitivity中寫代碼,要通過Activity交割Model業(yè)務(wù)邏輯層處理,這樣做的另外一個(gè)原因是Android中的Acitivity的響應(yīng)時(shí)間是5s,如果耗時(shí)的操作放在這里,程序就很容易被回收掉。
3) 模型層(Model):對數(shù)據(jù)庫的操作、對網(wǎng)絡(luò)等的操作都應(yīng)該在Model里面處理,當(dāng)然對業(yè)務(wù)計(jì)算等操作也是必須放在的該層的。就是應(yīng)用程序中二進(jìn)制的數(shù)據(jù)。