1. 程式人生 > >PEAA筆記三:Table Module

PEAA筆記三:Table Module

What is it
    Table Module是處理一個數據表或者資料檢視所有行的業務邏輯的一個單獨的例項。
    一般的,Domain Model等傳統面向物件模式都建立在物件/身份的基礎之上,就是說比如一個員工類的例項就對應著一個特定的員工,這樣我們可以執行員工操作,獲取員工資訊等。這些模式的不好之處在於很難和關係資料庫形成好的介面,導致我們要作大量工作用於處理資料在業務層和資料庫這兩個表現完全不同的層次之間的傳遞。
    Table Module則不然,它對於資料庫中的每個表建立一個類的例項,用來操作該表中的資料。

How it works
    Table Module模式使得我們可以打包資料和它們的行為,並同資料庫保持很好的聯絡。它常常作為面向表的後臺資料結構,而表狀的資料一般的是Sql語句呼叫的RecordSet返回值。
    Table Module即可以使類的單獨例項,也可以是類的一組靜態函式。採用例項的方式給我們更大的好處,便於通過一個存在的RecordSet來初始化,也很容易的通過繼承等方式進行擴充套件。
    Table Module模式可以通過廠模式來實現請求,另外的方法是通過Table Data Gateway,不好的是引入了Table Data Gateway類和機制,好的方面是我們可以只使用一個Table Module了,對於不同的資料來源,採用不同的Table Data Gateway就可以了
    Table Module使用方法是:首先通過Table Data Gateway把資料裝成RecordSet,然後以其為引數建立Table Module,通過Table Module來處理業務邏輯,並把修改的結果傳回資料庫。中間的過程中,RecordSet資料一直在記憶體中,而不必返回資料庫。
    當然Table Module並不侷限於表,表/檢視/Sql查詢結果等都可以應用此模式

When to use it
    Table Module基於面向表的資料,而且它一定是把資料結構放在整個程式碼的中心。面對一個複雜的業務邏輯,它不能提供足夠的例項-to-例項的能力,在處理多型上也存在不足,這時我們還是應該採用Domain Model,Domain Model+Active Record也可以處理表狀的資料。
    Table Module在COM應用中比較常見,這是因為微軟的ADO庫提供了一個很好的機制,使用RecordSet來處理資料庫的資料。