模型和檢視分離原則
阿新 • • 發佈:2018-12-30
該原則至少具有兩部分:
1. 不要將非UI物件直接與UI物件連線或耦合。例如,不要讓Sale軟體物件(非UI“領域物件”)引用Java Swing JFrame視窗物件。因為視窗與某個應用相關,而(理想情況下)非視窗物件可以在新應用中重用或附加到新介面。
2. 不要在UI物件方法中加入應用邏輯(例如稅金的計算)。UI物件應該只初始化UI元素、接受UI事件(例如滑鼠點選按鈕)、將應用邏輯的請求委派到非UI物件(例如領域物件)。
模型-檢視分離原則規定,模型(領域)不應該與檢視(UI)物件連線。例如,Register或Sale物件不應該直接向GUI物件,ProcessSaleFrame傳送,請求其顯示,改變顏色,關閉等。
觀察者模式(O’bserver)模式是該原則的合理擴充套件,即領域物件只能PropertyListener(java中的常用介面)的介面向檢視的UI物件傳送訊息。基於該模式,領域物件不知道UI物件的存在。領域物件只把訊息傳送給了實現了PropertyListener介面的物件,該更進一步的應用,領域物件封裝了與應用邏輯相關的資訊和行為。視窗類相對簡單,負載輸入,輸出,以及捕獲GUI事件,但是並不應用資料和應用邏輯。
模型-檢視分離的動機包括:
- 支援內聚的模型定義,這些定義只關注領域過程,而不是使用者介面。
- 許對模型和使用者介面層分別進行開發。
- 是介面的需求變更對領域層的影響最小化。
- 允許新檢視能夠被方便地連線到現有的領域層之上,而不會對領域層產生影響。
- 允許對同一模型物件同時使用多個檢視,例如銷售資訊同時具有表格和業務圖表檢視。
- 允許模型層的執行不依賴於使用者介面層,例如,訊息處理或批處理模式的系統。
- 允許簡模型層能夠簡便地移植到另一使用者介面框架下。