一挽绩、MVC
MVC模式的意思是,軟件可以分成三個部分窑滞。
視圖(View):用戶界面琼牧。
控制器(Controller):業(yè)務邏輯
模型(Model):數(shù)據(jù)保存
各部分之間的通信方式如下。
View 傳送指令到 Controller
Controller 完成業(yè)務邏輯后哀卫,要求 Model 改變狀態(tài)
Model 將新的數(shù)據(jù)發(fā)送到 View巨坊,用戶得到反饋
所有通信都是單向的。
二此改、互動模式
接受用戶指令時趾撵,MVC 可以分成兩種方式。一種是通過 View 接受指令共啃,傳遞給 Controller占调。
另一種是直接通過controller接受指令。
三移剪、實例:Backbone
實際項目往往采用更靈活的方式究珊,以 Backbone.js 為例。
- 用戶可以向 View 發(fā)送指令(DOM 事件)纵苛,再由 View 直接要求 Model 改變狀態(tài)剿涮。
- 用戶也可以直接向 Controller 發(fā)送指令(改變 URL 觸發(fā) hashChange 事件),再由 Controller 發(fā)送給 View攻人。
- Controller 非常薄取试,只起到路由的作用,而 View 非常厚怀吻,業(yè)務邏輯都部署在 View瞬浓。所以,Backbone 索性取消了 Controller蓬坡,只保留一個 Router(路由器) 猿棉。
四、MVP
MVP 模式將 Controller 改名為 Presenter渣窜,同時改變了通信方向铺根。
[圖片上傳中。乔宿。位迂。(6)] - 各部分之間的通信,都是雙向的。
- View 與 Model 不發(fā)生聯(lián)系掂林,都通過 Presenter 傳遞臣缀。
- View 非常薄,不部署任何業(yè)務邏輯泻帮,稱為"被動視圖"(Passive View)精置,即沒有任何主動性,而 Presenter非常厚锣杂,所有邏輯都部署在那里脂倦。
五、MVVM
MVVM 模式將 Presenter 改名為 ViewModel元莫,基本上與 MVP 模式完全一致赖阻。
唯一的區(qū)別是,它采用雙向綁定(data-binding):View的變動踱蠢,自動反映在 ViewModel火欧,反之亦然。Angular 和Ember 都采用這種模式茎截。