wie man Daten von der Geschäftslogik entkoppelt

8

Hier ist das Szenario,

Nehmen wir an, ich habe eine Benutzerklasse wie folgt:

%Vor%

Dann habe ich eine Klasse wie so, um Benutzer Kommentare zu behandeln:

%Vor%

Bisher sehr einfaches Zeug. Ich möchte natürlich einige Helfer hinzufügen, damit Kommentare einfacher für den Benutzer geladen werden können. So könnte ich etwas in der Benutzerklasse erstellen:

%Vor%

Ich denke, das ist eine einfache Möglichkeit, um keine Benutzerinstanzen herumzugeben. Aber an dieser Stelle bin ich unglücklich, weil ich mein User-Bean-Objekt mit der Geschäftslogik gekoppelt habe, die den Kommentar lädt. Ich habe auch die Standardzählung in der Benutzerklasse gespeichert, die dort nicht hingehören sollte. Was ist der beste Weg, dies zu tun? Mein Ziel ist es, dieses Objekt an ein JSP zu übergeben, damit JSTL-Funktionen aufgerufen werden können. Ich hatte eine Idee, einen UserWrapper zu erstellen, der so aussehen würde ...

%Vor%

Ich hoffe, ich war klar. Ich benutze nicht gerne UseBean-Tag, weil es einfach nicht notwendig für so etwas ist. Ich hoffe, es gibt einen saubereren Weg, um so etwas anzugehen! Jede Hilfe wäre willkommen!

Bearbeiten : Eine Sache, die ich vergessen habe zu erwähnen. Ich möchte diesen Code in JSTL verwenden können. Was bedeutet, dass es ein Getter sein muss. Das DAO-Modell ist allgemein bekannt, aber es hilft nicht viel, wenn mein Front-End-Entwickler ein Skript schreiben muss oder ich es für Orte laden muss, die er braucht oder nicht benötigt.

    
Amir Raminfar 26.10.2010, 19:16
quelle

2 Antworten

3

Von einem technologieunabhängigen Standpunkt ...

Ja, Sie haben absolut Recht damit, dass die Kopplung prohibitiv ist. Sehen Sie sich das Architekturmuster der Ebenen an, um eine Anleitung zur Struktur der Geschäftslogik und Daten zu geben. Zum Beispiel könnte es eine ausgezeichnete Idee sein, zwei Subsysteme zu entwerfen: eines für Ihre Logik, das andere für Ebenen. Beschränken Sie die Kommunikation zwischen ihnen durch only , damit die Logik Nachrichten an die Datenschicht weiterleiten kann. Darüber hinaus können Sie das Fassadenmuster verwenden, um jedes Subsystem darzustellen und so die Kopplung noch weiter zu verringern. Behandle jede Ebene als eine schwarze Box.

Ein anderes Muster, das sich als nützlich erweisen könnte, ist das Objekt für den Datenzugriff . Es wird Ihnen helfen, einen Vertrag zwischen den Layern zu definieren, um Daten bei Bedarf weiterzugeben.

    
Mike 26.10.2010, 19:22
quelle
2

Ich verwende dafür gerne Data Access Objects (DAOs). Ihre Klassen User und Comment enthalten nur die Felder für diese Objekte und anschließend erstellen Sie separate Klassen, um Daten zu diesen Objekten abzurufen. Die DAOs enthalten die Logik zum Abrufen, Aktualisieren, Auswählen usw. Zum Beispiel

%Vor%     
Owen 26.10.2010 19:31
quelle