模型-視圖-控制器 (MVC)是一種將用戶界面邏輯與業務邏輯分離的基本設計模式。模型-視圖-控制器 (MVC) 模式是將應用程序劃分為三個不同組件的一種方式;模型、視圖和控制器。
使用 UML 建模的 MVC 框架
這個模型-視圖-控制器可以使用刻板的 UML 表示法中的魯棒性分析來最好地進行可視化描述,這是由 Ivar Jacobson 在他的獲獎著作 Object-Oriented Software Engineering 中首次提出的(參見下面的參考資料),並由 Doug Rosenberg 等人進一步解釋. 在他的用例驅動的 UML 對象建模一書中。
這是一個簡單的、假設的 MVC 序列圖。您在上圖中看到的是,Web 用戶啟動查詢並生成事件,該事件由控制器處理以從模型中獲取所需信息、驗證信息並將結果集傳遞回視圖。
實體對象(模型)只不過是您的邊界對象正在尋找的信息或數據。這些可能是數據庫表、Excel 文件或“臨時”會話或緩存數據或類似的東西。
- 描述隨著時間的推移而存在並且主要關注持久狀態的對象。
- 通常來自域模型的對象
- 我們需要跟踪和存儲的東西
邊界對象(視圖)是參與者(例如,用戶)在您的軟件系統中與之通信的對象。這些對象可以是系統中的任何窗口、屏幕、對話框和菜單或其他用戶界面。您可以在分析用例時輕鬆識別它們。
- 描述系統和通信環境之間的連接。
- 參與者在與系統通信時使用
- 只有實體對象可以發起事件
- (通常是主要的用戶界面元素,例如屏幕)
控制對象(控制器)是業務對像或您的業務 Web 服務。這是您捕獲用於過濾出要呈現給用戶的數據的業務規則的地方,他要求什麼。所以控制器實際上是在控制業務邏輯和數據轉換。
- 描述特定用例中的行為。
- 邊界對象和實體對象之間的“粘合劑”
- 捕獲業務規則和策略
- (注意:通常作為其他對象的方法實現)
MVC模型中的連接規則
考慮邊界對象和實體對像是名詞,而控制器是動詞。
以下是連接的四個基本規則。
- Actor 只能與邊界對象交互或通信。
- 邊界對像只能與控制器和參與者通信。
- 實體對像只能與控制器交互。
- 控制器可以與邊界對象和實體對像以及其他控制器進行通信,但不能與參與者通信
請記住,邊界對象和實體對像都是名詞,而控制器是動詞。名詞不能與其他名詞對話,但動詞可以與名詞或動詞對話。
穩健性分析圖一覽
假設我們有以下文本格式的簡單用例描述:
在學生詳情頁面,教師點擊“添加課程”按鈕,系統顯示課程列表。教師選擇課程名稱並按下“註冊”按鈕。系統為學生註冊課程。
現在您可以根據上面的用例創建一個簡單的健壯性圖:
您還可以使用文本標籤將用例描述附加到穩健性圖的右側。
創建穩健性分析的五個步驟
- 您通過遍歷用例文本來執行用例的穩健性分析。
- 一次一句話,畫出演員、適當的邊界、實體對象和控制器,以及圖表各個元素之間的聯繫。
- 您應該能夠將基礎課程和所有替代課程放在一張圖表上。
- 任何查看健壯性圖的人都應該能夠閱讀用例文本中的操作過程,跟踪他的手指以及圖上的關聯,並看到文本和圖片之間的清晰匹配。
在執行此操作時,您可能必須重寫用例文本,以消除歧義並顯式引用邊界對象和實體對象。大多數人不會在初稿中編寫完美的用例文本。因此,我們可以使用穩健性分析來彌合用例文本和圖表之間的差距。
使用 MVC 序列圖開髮用例場景
基於穩健性分析,我們可以通過使用一組MVC格式的相關序列圖來開髮用例場景(正常或替代)。同樣,MVC序列圖有接口對象、控制器對象和實體對象:
- 實體是表示系統數據的對象:客戶、產品、交易、購物車等。
- 邊界是與系統參與者交互的對象:UserInterface、DataBaseGateway、ServerProxy 等。
- 控件是介於邊界和實體之間的對象。
它們通過邊界對象與實體交互來協調來自邊界的命令的執行。控制器對象通常對應於用例場景,並且通常由序列圖表示。
您可以在 MVC 序列圖中為生命線使用構造型,以直觀地清楚您在 MVC 中使用的對像類型,就像上面的魯棒性分析圖一樣。
示例 MVC 序列圖
假設有一個應用程序可以讓您搜索人員。UI 必須有一個文本字段,用戶可以在其中輸入搜索字符串,並且它可能有一個按鈕來開始搜索。最後,它必須有一個顯示搜索結果的區域。在我們的例子中,它是用一個列表組件實現的。
“搜索人員”用例場景是:
- 用戶在文本字段中輸入搜索字符串
- 用戶單擊搜索按鈕。
- 搜索結果顯示在結果列表中。
上面的序列圖顯示了用戶的按鈕單擊如何在應用程序中移動,直到結果最終顯示在列表組件中。
參考