Frage

Das Nachdenken über Code-Replikation zu vermeiden, habe ich eine Frage, die mir jedes Mal, wenn ich ein neues System zu entwickeln beginnen fängt:

Lassen Sie uns sagen, dass wir ein System haben, in dem ich einen Kunden haben, haben sie in einem Repository CRUD und es als eine Ressource in einem Webservice zeigen.

Das Nachdenken über die an den Kunden bezogenen Klassen, hätten wir (Okay, ich werde nie diese Namen für echte verwenden):

  • CustomerEntity, was das Unternehmen verwendet für die Systemlogik zu tun;
  • CustomerRepositoryEntity, die die Tabellenzeile, wo es gespeichert wird;
  • CustomerXMLEntity, die den XML-Knoten 'Kunde';

Es scheint, dass ich drei Einheiten haben und die alle Kunden Attribute werden in jeder Klasse sein. Ich frage mich, ob es nicht eine Möglichkeit ist, oder ein Muster diese drei Klassen innerhalb derselben Einheit zu konsolidieren, genannt einfach „Kunden“.

Auf diese Weise jedes Mal wenn ich brauche eine neue Darstellung des „Kunden“ (zum Beispiel, wenn ich es als Json Element darstellen will) zu schaffen, ich brauche nicht eine neue Klasse für sie zu schaffen. Ich weiß, es ist ein ganz besonderes Problem, aber ich habe mich nur gefragt, ob es nicht einfacher sein könnte (und besser aussehen), als wie ich es jetzt tue.

War es hilfreich?

Lösung

Angenommen, Sie die gleichen Sprachen in Ihren verschiedenen Anwendungen verwenden ...

Erstellen Sie eine Proxy-Klasse, und eine Back-End-Klasse.

Die Back-End-Klasse verläuft in der Nähe Ihrer Daten und existiert nur Daten zu Ihrem Proxy zu dienen.

Ihre Proxy läuft auf jedem Client und nimmt die Position des Back-End-Endpunkt als Initialisierungsparameter. Wenn ein get / set auf Ihrem Proxy-Objekt aufgerufen wird, es übernimmt die Validierung und Geschäftsregeln, dann die Anforderung an Ihre Backend-Klasse reichen zurück, die die Implementierungsdetails mit Ihren Daten von persistierenden.

Sie müssen zwei Abstraktionsebene: ein für Datenpersistenz, und einen für Geschäftsregeln

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