官术网_书友最值得收藏!

2.5 模式如何工作

了解不同的模式如何工作的一個好方法是檢查一個典型用戶請求的處理流程。設想用戶按下按鈕希望看到關于網格的特定數據行的細節。以下是可能發生的操作順序。

1)當用戶按下“顯示細節”(Show Details)按鈕時,窗口生成“按鈕推送”事件。

2)根據使用的模式,會發生以下所列的一種情況。在所有模式中,控制器、表示器或視圖模型將會接收用戶請求動作的通知,然后做出如下操作。

MVC:控制器接收事件并檢查視圖找到當前數據行。

MVP:視圖接收事件并為表示器生成不同的事件以供其使用。該事件內嵌了當前行的信息和表示器所需要的其他相關信息。

MVVM:基于XAML應用程序可用的高級綁定,會把視圖中的“按下按鈕”命令自動綁定到按鈕上。這個高級綁定也允許我們把視圖模型中的某一個屬性綁定到數據網格上,所以視圖模型會有一個指向當前活動行的指針。

3)根據當前行的信息,控制器、表示器或者視圖模型,將向數據模型發送額外數據請求。

4)模型(也就是模型里的知識庫)接收數據請求并發起數據庫查詢。

5)原始數據庫數據返回到模型,模型會做一些必要的預處理,通過復制值到合適的實體屬性,把一個原始數據變為實體數據類。如果使用了對象關系映射之類的工具,比如Entity Framework或是NHibernate,ORM會完成這一步。

6)業務實體會從模型返回到控制器、表示器或視圖模型。

7)控制器、表示器或視圖模型可以執行來自“顯示細節”(Show Details)請求的任何進一步的處理。比如,如果應用程序需要顯示財務數據,那么它可能獲取StockPriceService的一個實例,并請求獲得用戶感興趣的股票的當前價格,然后更新實體類。

8)為了顯示含有詳細股票數據的對話框,控制器、表示器或視圖模型會創建另一個控制器(或者表示器亦或者視圖模型),我們稱為"DialogController",傳給它合適的顯示信息,然后調用DialogController的ShowDialog方法。

9)DialogController創建合適的視圖,把數據和視圖中的對應文本框進行綁定,把最終的視圖呈現給用戶。

這是所有處理中最簡單的一個。控制器、表示器或是視圖模型,可以處理來自于用戶的更多、更復雜的任務。然而,關于這些不同部分之間的前提要求需要滿足:

● 視圖只有UI邏輯,沒有業務規則和其他邏輯。

● 模型(數據模型而不是視圖模型)只有數據訪問、實體類生成邏輯和數據驗證。

● 控制器、表示器或是視圖模型,有執行用戶請求的特定操作的必要邏輯。

主站蜘蛛池模板: 杨浦区| 偏关县| 固始县| 珠海市| 盐山县| 易门县| 寻甸| 宿州市| 遵义市| 宣化县| 文成县| 威远县| 兴仁县| 共和县| 千阳县| 军事| 湄潭县| 广德县| 辉县市| 仪征市| 昆山市| 繁峙县| 佛山市| 平定县| 简阳市| 玉环县| 拜城县| 会理县| 洪洞县| 六枝特区| 修文县| 邓州市| 阳原县| 安阳市| 普宁市| 扬中市| 遂溪县| 磴口县| 临桂县| 离岛区| 南平市|