2009-07-02 10 views
6

Ich lese http://en.wikipedia.org/wiki/Domain-driven_design gerade jetzt, und ich brauche nur 2 schnelle Beispiele, damit ich verstehe, was 'Wertobjekte' und 'Dienstleistungen' im Kontext sind DDD.Domain Driven Design Neuling, bitte erklären 'Wertobjekte' und 'Dienstleistungen' kurz

  • Wertobjekte: Ein Objekt, das eine Eigenschaft eines Objekts beschreibt. Wertobjekte haben keine konzeptionelle Identität. Sie sind normalerweise schreibgeschützte Objekte und können unter Verwendung des Flyweight-Entwurfsmusters gemeinsam genutzt werden.

  • Services: Wenn eine Operation nicht konzeptionell zu einem Objekt gehört. Nach den natürlichen Konturen des Problems können Sie diese Operationen in Services implementieren. Das Servicekonzept heißt in GRASP "Pure Fabrication".

  • Wertgegenstände: Kann mir bitte jemand ein einfaches Beispiel geben?

    Services: Wenn es also kein Objekt/eine Entität ist oder zu Repository/Fabriken gehört, dann ist es ein Service? Ich verstehe das nicht.

    Antwort

    7

    Das archetypische Beispiel eines Value Object ist Money. Es ist sehr wahrscheinlich, dass Sie, wenn Sie eine internationale E-Commerce-Anwendung erstellen, das Konzept von "Geld" in eine Klasse einbetten möchten. Auf diese Weise können Sie Operationen mit monetären Werten ausführen - nicht nur Grundaddition, Subtraktion usw., sondern möglicherweise auch Währungsumrechnungen zwischen USD und, sagen wir, Euro.

    Ein solches Money-Objekt hat keine inhärente Identität - es enthält die Werte, die Sie hineinlegen, und wenn Sie es entsorgen, ist es weg. Darüber hinaus werden zwei Money-Objekte, die 10 USD enthalten, als identisch betrachtet, auch wenn sie separate Objektinstanzen sind.

    Weitere Beispiele für Wertobjekte sind Maße wie Länge, die einen Wert und eine Einheit enthalten kann, z. B. 9,87 km oder 3 Fuß. Wiederum wird ein solcher Typ neben dem bloßen Enthalten der Daten wahrscheinlich Konvertierungsmethoden für andere Messungen und so weiter anbieten.

    Dienste sind andererseits Typen, die eine wichtige Domänenoperation ausführen, aber nicht wirklich gut in die anderen, mehr auf Nomen basierenden Konzepte der Domäne passen. Sie sollten sich bemühen, so wenige Dienste wie möglich zu haben, aber manchmal ist ein Dienst der beste Weg, ein wichtiges Domänenkonzept zu kapseln.

    Sie können mehr über Wertobjekte, Dienstleistungen und vieles mehr in dem ausgezeichneten Buch Domain-Driven Design lesen, das ich nur empfehlen kann.

    3

    Wert Objekte: Ein typisches Beispiel ist eine Adresse. Gleichheit basiert auf den Werten des Objekts, daher der Name, und nicht auf Identität. Das bedeutet, dass beispielsweise 2 Personenobjekte die gleiche Adresse haben, wenn die Werte ihrer Adressobjekte gleich sind, selbst wenn die Adressobjekte 2 vollständig unterschiedliche Objekte im Speicher sind oder einen anderen Primärschlüssel in der Datenbank haben.

    Dienste: bieten Aktionen an, die nicht unbedingt zu einem bestimmten Domänenobjekt gehören, sondern auf Domänenobjekte wirken. Ich denke zum Beispiel an einen Dienst, der E-Mail-Benachrichtigungen in einem Online-Shop sendet, wenn der Preis eines Produkts unter einen bestimmten Preis fällt.

    InfoQ hat ein freies Buch über DDD (eine Zusammenfassung von Eric Evans Buch): http://www.infoq.com/minibooks/domain-driven-design-quickly

    Verwandte Themen