Frage

Ein großer Teil der Zeit werde ich ein Business-Objekt, das eine Eigenschaft für einen Benutzer-Index oder eine Reihe von Indizes für einige Daten hat. Wenn ich in einer Form oder einem anderen Ansicht dieses Objekt anzeigen muss ich den Benutzer vollständigen Namen oder einige der anderen Eigenschaften der Daten. Normalerweise schaffe ich eine andere Klasse myObjectView oder etwas ähnliches. Was ist der beste Weg, um diesen Fall zu behandeln?

Zur weiteren Klärung: Wenn ich eine Klasse eines issue tracker und meine Klasse für ein Problem hat IxCreatedByUser als Eigenschaft und eine Sammlung von IxAttachment Werten (Indizes für die Befestigung Datensätze). Wenn ich zeigen diese auf einer Web-Seite, die ich John Doe statt der IxCreatedByUser zeigen wollen, und ich möchte einen Link zu der Anlage zeigen und den Dateinamen auf der Seite. Also in der Regel erstelle ich eine neue Klasse mit einer Sammlung von Objekten Anlage und einer CreatedByUserFullName Eigenschaft oder etwas in der Art. Es fühlt sich einfach falsch Erstellung diese zweite Klasse Daten auf einer Seite angezeigt werden soll. Vielleicht bin ich falsch?

War es hilfreich?

Lösung

Die Fassade Muster.

Ich denke, Ihr Ansatz, eine Fassade Muster zu abstrahieren, die Komplexität mit mehreren Datenquellen zu schaffen ist oft sinnvoll, und wird Ihr Code leicht verständlich machen.

Es sollte zu viele Schichten von Abstraktionen zu schaffen genommen werden, weil die Dereferenzierungsebene den ersten Versuch, den Ruin treiben wird der Code leichter zu machen, zu lesen. Vor allem, wenn Sie das Gefühl nur schreiben Klassen zu entsprechen, was man an anderen Orten gemacht haben. Für intance wenn Sie eine myLoanView haben, muss nicht unbedingt benötigen Sie einen myView für jeden einzelnen Dialog im System zu erstellen. Nehmen Sie sich 10-Schritte zurück aus dem Code, und vielleicht eine Fassade machen, die eine wiederverwendbare und intuitive Abstraktion ist, können Sie an mehreren Stellen verwendet werden.

Sie können ferner auf die genaue Art Ihrer Herausforderung zu erarbeiten.

Andere Tipps

Ein wichtiger Grundsatz ist, dass jede Ihrer Klassen sollten einen definierten Zweck. Wenn der Zweck Ihrer „Business-Objekt“ Klasse relevante Daten auf das Business-Objekt mit Bezug zu belichten, kann es durchaus sinnvoll sein, eine Eigenschaft auf der Klasse zu erstellen, dass die Teilnehmer die Anforderung für den Nachschlag Beschreibung der verwandten Klasse, die dafür verantwortlich ist, Information. Alle Formatierungen, die spezifisch für die Klasse ist, würden in der Eigenschaft durchgeführt werden.

Hier einige Richtlinien, die Ihnen helfen, mit der Entscheidung, wie diese (ziemlich häufig, IMO) Muster zu handhaben:

  1. Wenn Sie alles, was Sie brauchen, ist ein Quickie Link zu einer Lookup-Tabelle ist, die nicht oft ändern (zB eine Tabelle von Adressen, die auf eine Tabelle von Staaten und / oder Ländern verbindet), können Sie eine halten lazy-loaded , statische Kopie der Lookup-Tabelle.

  2. Wenn Sie eine wirklich große Klasse haben, die viel verbindet oder Subqueries laden nur zu Anzeigezwecken nehmen würde, werden Sie wahrscheinlich eine „Ansicht“ oder „Info“ Klasse für die Anzeige machen wollen, wie Sie haben oben beschrieben. So stellen Sie sicher, dass die xinfo Klasse (für die Anzeige) Lasten deutlich schneller als die X-Klasse (für die Bearbeitung). Dies ist eine Situation, in der eine Ansicht auf der Seite Datenbank verwendet, kann eine sehr gute Idee sein.

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