Frage

Ich habe eine Fabrik-Klasse, die Objekte mit Daten auffüllt. Ich möchte Einsparung von dem Objekt zu der Umsetzung, aber nicht will, das Objekt mit db Sachen füllen - es ist dumm meine Fabrik zu haben, die die Klasse erstellt auch die Daten speichern

?

das heißt: in meinem .Save () Methode für das Objekt i nennen würde Factory.Save (myObject);

War es hilfreich?

Lösung

Wenn Sie in Klassen besorgt über Datenbank Sachen sind - haben Sie darüber nachgedacht, mit O / R-Mapper

?

Dies würde die Datenbank Zeug hält ganz aus Ihrem Code und Ihre Domain-Objekte sauber.

nehmen Vielleicht einen Blick auf NHibernate oder Active Record .

Andere Tipps

Die Factory-Klasse ist ein Erzeugungsmuster, die bei der Erstellung neue Objekte helfen.

Es gibt verschiedene Muster, die mit anhaltenden Objekten beschäftigen, von denen Daten Mapper http://martinfowler.com/eaaCatalog/dataMapper.html

Dies wird oft in conjection mit Repository verwendet http://martinfowler.com/eaaCatalog/repository.html

Sie können diese Muster zu abstrahieren verwenden die Datenbank entfernt von Ihrer Domain / Business-Objekte und greifen Sie aus Ihrer Anwendung Objekte abfragen und zu speichern.

So ist die Data Mapper / Repository für beide Aspekte der Nachhaltigkeit zuständig ist (aus der Datenbank bevölkern, und zurück zur Datenbank zu speichern).

Nein, es ist gar nicht dumm, in der Tat, das ist die Art und Weise, wie jeder sollte es tun. Business-Objekt sollte keine Persistenzlogik enthalten.

Btw, wenn Sie C # 3.0 verwenden, dann könnten Sie nicht einmal mit Factory-Klasse stören. Erstellen Sie einfach Erweiterungsmethoden. So können Sie immer noch Ihre Persistenz-Code von Business-Objekt isoliert haben kann und noch in der Lage sein myObject.Save () aufrufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top