2007年8月3日 星期五

C22 Model的設計(1)──Model的存取


這張圖是我所認定整個系統具有的完整層次。Model的部分是以淡紫色所顯示的部分。

為了支援各種不同的Model實作,首先要定義的是Model的存取介面,這個介面定義的是Model自身內部資料的存取方式與邏輯;再上一層會有Model Service,裡面定義了跨Model存取邏輯的封裝。

如果有個戶政機關想統計轄區裡所有人的平均年齡,那麼會在代表人的Model裡定義取得年齡的方法,交由上一層的Controller計算平均年齡;如果戶政機關想統計的是所有家庭夫妻差距的歲數,這時就得在Service定義一個方法,分開從Model各取得的夫與妻的年齡再傳回差距的歲數。

縱觀View Service、Controller Service與Model Service,其實我們可以發現功能分析時確定要做的每一步驟都會在這幾個層次裡設計,在設計的同時必須確定每一個動作要如何實作,是否要使用元件。在我的想法裡,Service裡應放著系統的處理邏輯,每個動作都該放進元件裡實作(很簡單的動作則另外拉個API),如此可以明確分隔出二者的意義;此時每個使用到的元件介面就必須在架構設計階段內同時設計與定義。

在這個設計步驟完成時,整個系統的功能設計就告一段落;每一個功能、每一個步驟、每一個動作的處理邏輯都應該包含在內。至於如何達成處理動作,就交由元件來完成。

沒有留言:

張貼留言