Was ist Anämie nos, was Anämie nos ist.

Was ist Anämie nos, was Anämie nos ist.

Was ist Anämie nos, was Anämie nos ist.

Dies ist einer jener anti-Muster, die um für eine recht lange Zeit gewesen ist, doch scheint eine besondere Spurt im Moment zu haben. Ich war mit Eric Evans auf dieser Chat, und wir haben beide bemerkt, sie scheinen immer beliebter zu bekommen. Als große Booster eines geeigneten Domain Model. dies ist nicht eine gute Sache.

Das grundlegende Symptom einer anämischen Domänenmodell ist, dass auf den ersten Blick es wie die reale Sache aussieht. Es gibt Objekte, viele benannt nach den Substantiven in der Domäne Raum, und diese Objekte mit den reichen Beziehungen und Struktur verbunden, die echte Domain-Modelle haben. Der Haken kommt, wenn man das Verhalten suchen, und Sie erkennen, dass es kaum ein Verhalten auf diese Objekte, so dass sie kaum mehr als Taschen von Getter und Setter zu machen. Tatsächlich oft kommen diese Modelle mit Design-Regeln, die sagen, dass Sie eine beliebige Domain-Logik in der die Domain-Objekte nicht zu setzen sind. Stattdessen gibt es eine Reihe von Service-Objekten, die Erfassung alle Domain-Logik. Diese Dienste leben auf dem Domänenmodell und verwenden Sie das Domänenmodell für Daten.

Die grundlegende Schrecken dieses anti-Muster ist, dass es auf der Grundidee der objektorientierten Design so Gegenteil ist; welches Daten und Verfahren miteinander zu kombinieren. Die anämischen Domänenmodell ist wirklich nur ein verfahrens Stil Design, genau die Art von Sache, die Frömmler wie mich (und Eric) wurden kämpfen seit unserer frühen Tage in Smalltalk-Objekt. Was noch schlimmer ist, viele Leute denken, dass anämische Objekte sind reale Objekte und damit verfehlen vollständig den Punkt von dem, was objektorientiertes Design geht.

Jetzt objektorientierte Purismus ist alles sehr gut, aber ich weiß, dass ich mehr grundlegende Argumente gegen diese Anämie benötigen. Im Wesentlichen ist das Problem mit anämischen Domänenmodelle, dass sie die gesamten Kosten eines Domänenmodell entstehen, ohne die Vorteile ergibt. Die primäre Kosten ist die Ungeschicklichkeit Zuordnung zu einer Datenbank, die in einer ganzen Schicht führt typischerweise von O / R-Mapping. Dies lohnt sich, genau dann, wenn Sie die leistungsstarken OO-Techniken verwenden, um komplexe Logik zu organisieren. Durch Herausziehen alle das Verhalten in Dienste jedoch beenden Sie im Wesentlichen mit der Transaktion Scripts auf. und somit die Vorteile verlieren, die das Domain-Modell bringen kann. Wie ich in P von EAA diskutiert. Domain Models sind nicht immer das beste Werkzeug.

Es ist auch zu betonen, dass das Verhalten in den Domänenobjekten, nicht den festen Ansatz Schichtung widersprechen sollte der Verwendung von Domain-Logik von solchen Dingen wie Ausdauer und Präsentation Verantwortlichkeiten zu trennen. Die Logik, die in einem Domain-Objekt sein sollte, ist Domain-Logik — Validierungen, Berechnungen, Geschäftsregeln — was auch immer Sie mögen es nennen. (Es gibt Fälle, wenn Sie ein Argument machen für die Umsetzung Datenquelle oder Präsentationslogik in einem Domain-Objekt, aber das ist orthogonal zu meiner Sicht der Anämie.)

Eine Quelle der Verwirrung in all dem ist, dass viele OO-Experten empfehlen eine Schicht aus verfahrenstechnischen Dienstleistungen auf einem Domänenmodell setzen, um einen Service Layer bilden. Aber das ist kein Argument, das Domänenmodell leer Verhalten zu machen, in der Tat Service-Layer-Befürworter verwenden, um eine Dienstschicht in Verbindung mit einem behaviorally reichen Domain-Modell.

Eric Evans ausgezeichnetes Buch Domain Driven Design hat folgendes über diesen Schichten zu sagen.

Application Layer [seinen Namen für Service Layer]: Definiert die Arbeitsplätze der Software tun soll und leitet die expressive Domänenobjekte Probleme zu erarbeiten. Die Aufgaben dieser Schicht ist verantwortlich für sinnvoll sind für das Unternehmen oder die für die Interaktion mit den Anwendungsschichten von anderen Systemen. Diese Schicht wird dünn gehalten. Es enthält keine Geschäftsregeln oder Wissen, sondern nur koordiniert Aufgaben und die Delegierten zu Kooperationen von Domänenobjekten in der nächsten Schicht die Arbeit. Es hat keinen Staat die Geschäftslage widerspiegelt, aber es kann Staat haben, der den Fortschritt einer Aufgabe für den Benutzer oder das Programm widerspiegelt.

Domain Layer (oder Modell Layer): Verantwortlich für die Darstellung von Konzepten der Unternehmen, Informationen über die Geschäftslage und Geschäftsregeln. Staat, der die Geschäftslage widerspiegelt gesteuert und hier verwendet, auch wenn die technischen Einzelheiten der Speicherung an die Infrastruktur delegiert werden. Diese Schicht ist das Herz von Business-Software.

Der entscheidende Punkt hier ist, dass der Service Layer ist dünn — alle wichtigen Logik liegt in der Domänenschicht. Er wiederholt diesen Punkt in seinem Dienst Muster:

Nun, desto häufiger Fehler ist es zu leicht aufgeben auf das Verhalten in ein geeignetes Objekt passend, sich allmählich in Richtung der prozeduralen Programmierung rutscht.

Ich weiß nicht, warum dieses anti-Muster so üblich ist. Ich vermute, dass es wegen ist für viele Menschen, die nicht wirklich mit einer richtigen Domain-Modell gearbeitet, vor allem, wenn sie von einem Daten Hintergrund kommen. Einige Technologien fördern sie; wie Entity Beans J2EE ist die, die ich POJO Domain-Modelle der Gründe bevorzugen.

Im Allgemeinen, desto mehr Verhalten, das Sie in den Diensten finden, desto wahrscheinlicher werden Sie sich von den Vorteilen eines Domain-Modell zu berauben. Wenn alle Ihre Logik in Dienste ist, haben Sie sich blinde beraubt.

Wenn Sie diesen Artikel nützlich gefunden, bitte teilen. Ich schätze das Feedback und Ermutigung

ZUSAMMENHÄNGENDE POSTS

  • Die Symptome einer schweren Anämie, was …

    Anämie ist eine Erkrankung des Blutes aus dem Körper nicht genügend rote Blutkörperchen oder wenn zu viele sind zerstört produzieren. Anämie kann auch vor dem Verlust großer Mengen an Blut…

  • Was ist Anämie und welche Ursachen it

    Was ist Anämie? Wenn Sie don t genug gesunden roten Blutkörperchen haben, haben Sie eine so genannte Anämie. Das heisst Ihr Blut hat zu wenig Hämoglobin . der Teil der roten Blutkörperchen…

  • Was ist Anämie und welche Ursachen it

    Anämie (Uh-NEE-mee-uh) tritt auf, wenn Sie weniger als die normale Anzahl der roten Blutkörperchen im Blut oder wenn die roten Blutkörperchen im Blut nicht genügend Hämoglobin…

  • Die treatment von Schweren Anämie

    American Thoracic Society, CDC und Infectious Diseases Society of America Bitte beachten Sie: Ein Erratum Wurde für diesen Artikel veröffentlicht. Um das Erratum zu Sehen, klicken Sie bitte…

  • Was ist hämolytische Anämie NHLBI, NIH, akute schwere Anämie.

    Hämolytische Anämie (HEE-moh-lit-ick uh-NEE-me-uh) ist ein Zustand, in dem rote Blutkörperchen zerstört und aus dem Blut entfernt werden, bevor ihre normale Lebensdauer abgelaufen ist. Rote…

  • Was ist Makrozytose ohne Anämie

    Die Knochenmarkerkrankungen Chronisch obstruktive Lungenerkrankung In der westlichen Welt, etwa 90% der Megaloblastäre Anämie resultieren aus entweder alkoholbedingtem Folsäuremangel oder…