2014-02-28 27 views
1

這些天我正在閱讀Martin Fowler的企業應用架構模式,這真的很棒。福勒的模式:以特定的方式處理表繼承

因爲我有點開始OO PHP項目(應用程序後端)我想使用數據映射器爲我的域模型。我讀了關於表繼承,​​我注意到它有3種類型。

我不喜歡Single,因爲我將有不止幾種類型的條目,它們將從基類/類型中繼承。在這種情況下,我會在db中有很多空的空間。

我沒有看到其他兩個都適合。

那是因爲我有計劃:

  1. 基類(項)
  2. 子類(例如:StateInstitution延伸進入)
  3. 子類(例如:CompanyAffiliate延伸進入) ...

這裏的主要觀點是,我打算將子類的額外信息保存到公共表tbl_entrymeta中 - 也就是說,我可以有許多子類從基本Entry類擴展,但不是每個單獨的表(只有一個,tbl_entrymeta)。

我的問題是:如何在這種情況下使用Data Mapper?創建繼承映射器的關鍵是什麼?或者元數據映射器是關鍵?

+0

「域模型」是描述特定業務領域累積知識總和的術語。所述代碼中的知識使用[domain pbjects](http://c2.com/cgi/wiki?DomainObject)來體現。 –

回答

-1

爲代表關係數據庫表tbl_entrymeta的對象的公用表(EntryMeta)創建Data Mapper類。這個對象將舉行3場(列)內的子類的元:

1. SubClass 
2. FieldName 
3. FieldType 

這樣你就可以輕鬆地存儲所有繼承基類中的子類的元,並與另外的信息領域擴展它。

+0

數據映射器模式的要點是將存儲細節與域邏輯分開。 –