2010-05-28 7 views
21

Ich habe viel mit PHP gearbeitet. Aber kürzlich wurde ich auf eine Arbeit geschickt, die Java benutzt. In PHP habe ich eine Menge Singleton-Objekte benutzt, aber dieses Muster hat nicht dieselbe Bedeutung in Java wie in PHP. also wollte ich für eine Utility-Klasse (eine Klasse mit statischer Methode) gehen, aber mein Chef nicht mag diese Art von Klassen und fragte mich, für Dienste Objekt zu gehen. Also meine Vermutung war, dass ein Service-Objekt mit einem Konstruktor nur eine Klasse, die einige öffentliche Methoden implementieren ... Bin ich richtig?Was ist die Definition eines Service-Objekts?

Antwort

19

Domain-Driven Design definiert einen Dienst als:

A SERVICE eine Operation als Schnittstelle angeboten wird, die allein in dem Modell steht, ohne Zustand einkapselt ... [p. 105]

Ja, es ist eine Klasse mit öffentlichen Methoden, aber zusätzlich implementiert es eine Schnittstelle, die diese Methoden verfügbar macht. Im Kern ist der Dienst die Schnittstelle - die Klasse, die es implementiert ist nur eine Implementierung Detail.

+0

Also, wenn ich es richtig, für jede Dienstklasse, die ich in den Dienst Umwandlung bin ich soll eine Schnittstelle schaffen? – MaxouMask

+1

Ja, nun, aber in OO ist das gesamte Konzept einer Utility-Klasse ein Code-Geruch. Wahre OO-Klassen haben klar definierte Verantwortlichkeiten ... –

+0

okay vielen Dank :) – MaxouMask

2

fand ich eine andere Definition für ein Dienstobjekt statt, dass man für konkrete Klassen als eine Schnittstelle beschrieben, die im Begriff sind, einen bestimmten Dienst durch diese API Definition durch die Schnittstelle festgelegt zu liefern.

Artikel über Microservices>Link Definition für Dienstobjekt:

3: Viele objektorientierte Designer, einschließlich uns selbst, den Begriff Service-Objekt in der für ein Objekt Domain-Driven Design Sinn verwenden, Das führt ein bedeutender Prozess, der nicht an eine Entität gebunden ist. Dies ist ein anderes Konzept als die Verwendung von "Service" in diesem Artikel. Leider hat der Begriff Service beide Bedeutungen und wir müssen mit dem Polysem leben.

Was ich hier verstehe, ist nicht der technische Aspekt, es als "Schnittstelle" zu definieren, sondern eher das Designkonzept, das es beschreibt. Ich verstehe auch eine service object einfach eine Domäne einer Klasse wie ihre Verantwortung. Also, wenn Sie Web-Anwendungen entwickeln Sie können ein Dienstobjekt SecurityService haben, die Bestandteil eines SecurityController ist. Der Controller ruft den Dienst auf, um die sicherheitsspezifischen (domänenspezifischen) Dienste tatsächlich zu verarbeiten.

Verwandte Themen