2008-09-18 64 views

回答

20

兩種模式之間的主要區別是:

  • 在ActiveRecord的,你有兩個知道所有的業務邏輯和如何保存/數據庫,user.getLinkToProfile自我更新一個域對象()和User :: find(1),User :: save(user)

  • 在DataMapper模式中,您有一個包含所有業務邏輯的域對象,例如user.getLinkToProfile()(或類似的東西)但知道什麼都沒有關於有問題的數據庫,除了這個你hav EA映射器對象,負責保存,更新,選擇等用戶對象從數據庫這將對UserMapper ::發現(1),UserMapper.save(用戶)

DataMapper的是潛在的更復雜的然後是ActiveRecord,但使用ActiveRecord開發域模型和數據庫異步操作要容易得多。

2

活動記錄非常繁重,數據映射器和域對象將這些問題分離出來,因此您可以爲您的「域」或「實體」對象定義各種方面的代碼。

我個人比較喜歡,不是你問的,與分離到域對象,數據映射器一起,可能使用匯編模式,甚至是數據傳輸模式,以確保數據庫和上層應用程序層。

...優雅和簡單的分色總是有幫助。