復雜的軟件必須有清晰合理的架構,否則無法開發和維護。
MVC(Model-View-Controller)是最常見的軟件架構之一,業界有著廣泛應用。
除了MCV模式還有MVVM和MVP模式,下邊就來介紹下著三種模式:
一. MVC模式的意思是,軟件可以分成三個部分
Model + View + Controller
模型(Model):數據保存
視圖(View):用戶界面
控制器(Controller):業務邏輯
**各部分事件的通信方式
View -> Controller ->Model -> View
1.View 傳送指令到達Controller
2.Controller 完成業務邏輯后,要求Model改變狀態
3.Model 將新的數據發送到View,用戶得到反饋
**所有的通信都是單向的
* (二) 互動模式
接受用戶指令時,MVC可以分成兩種方式.
一種是過View接受指令,傳遞給Controller.
用戶(開始)->View -> Controller -> Model -> View(結束);
另一種是直接通過Controller接受指令.
用戶(開始) -> Controller -> Model -> View(結束);
開始的位置不同,都遵從通信方式的順序
(三) 實例:(以Backbone.js為例)
靈活的運用,使得通信方式更加靈活
1.用戶可以向View發送指令(DOM事件),再由View直接要求Model改變狀態.
2.用戶也可以直接向Controller發送指令(改變URL觸發hashChange事件),再由Controller發送View.
3.Controller 非常薄,只起到路由的作用,而View非常厚,業務邏輯都部署在View. 所以,Backbone索性取消了Controller, 只保留一個Router(路由器).
二. MVP MVP模式將Controller改名為PResenter,同時改變了通信方向.
Model + View + Presenter
presenter(主持之類的)
1.各部分之間的通信,都是雙向的.
View <- (雙向) -> Presenter <- (雙向) ->Model
2.View 與 Model不發生練習,都通過Presenter傳遞.
3.View非常薄,不部署任何業務邏輯,被稱為"被動視圖"(Prassive).既沒有任何主動性, 而Presenter非常厚,所有邏輯部署都在這里
三. MVVM MVVM模式將Presenter改名為ViewModel,基本上與MVP模式完全一致
通信方式 View <- -> ViewModel <- ->Model
唯一的區別是,它采用雙向綁定(data-binding):View的變動,自動反應在ViewMdoel,反之亦然. Angular和Ember都是這種模式.
新聞熱點
疑難解答