2007年8月20日 星期一

D09 Component的設計(4)──Model

與系統一樣Component應該有自己的Model。理由很簡單,如果Component操作時使用的Model屬於別的元件,那麼Component間會有使用關聯;如果Component使用的Model是簡單型的集合物件,又會因為加上基本存取動作而使得程式碼變得較難讀懂。

Component的定義與Class一樣需要高聚合與低耦合的封裝,為了減低與其他Component的關聯,定義出屬於自己的Model是勢在必行的。在設計時根據Component Controller的使用決定Model提供的方法並定義在ComponentModelInterface裡,即使是其他地方使用的Model只要實作這個Component指定的ComponentModelInterface就允許傳進來使用。

Component同時應該準備好ComponentModelInterface的基本實作給無法提供Model實作的程式使用,有些設計者會將許多Component集中使用同一種實作的Model而沒有定義ComponentModelInterface,這樣使得Component與Model緊密結合而無法改變使用其他實作的Model。

傳入Component的Model大致上有三類作法:第一種是直接讓系統使用的Data Model實作Component定義的Model Interface;第二種是使用Wrapper Design Pattern在生成ComponentModel的實作時把系統Data Mdeol包裝在裡頭;第三種則是設計一個轉換類別,在使用Component之前把Data Model的內容搬到ComponentModel並在使用後搬回來。

沒有留言:

張貼留言