2008-09-18 10 views

Antwort

20

Der wesentliche Unterschied zwischen den beiden Mustern, ist dies:

  • In der Active Sie ein Domain-Objekt haben, das sowohl alle Business-Logik kennt und wie sich selbst zu retten/aktualisieren in der Datenbank, user.getLinkToProfile() und Benutzer :: find (1), Benutzer :: save (user)

  • Im DataMapper-Muster haben Sie ein Domänenobjekt, das die gesamte Geschäftslogik enthält, zum Beispiel user.getLinkToProfile() (oder etwas ähnliches) aber weiß nichts über die Datenbank in Frage, zusätzlich zu diesem Sie hav ea Mapper-Objekt, das für die Speicherung verantwortlich ist, die Aktualisierung, die Auswahl usw. Benutzerobjekte aus der Datenbank, der UserMapper würde :: find (1), UserMapper.save (Benutzer)

DataMapper ist potenziell komplexe dann ActiveRecord, aber es ist viel einfacher, Ihr Domain-Modell und die asynchrone Datenbank dann mit ActiveRecord zu entwickeln.

2

Aktiver Datensatz ist sehr schwer, Data Mapper und Domain-Objekt trennen diese Bedenken aus, so dass Sie einen klareren Satz von Code haben, der verschiedene Aspekte für Ihre "Domain" - oder "Entity" -Objekte erledigt.

Ich persönlich bevorzuge, nicht, dass Sie gefragt, gehen mit der Trennung in Domain-Objekt, Data Mapper, wahrscheinlich ein Assembly-Muster und sogar ein Datenübertragungsmuster, um klare Trennung von was passiert mit Daten zwischen der Datenbank und der oberen zu gewährleisten Stufen einer Anwendung.

... elegante und einfache Trennungen immer helfen.

Verwandte Themen