Business-Delegate-Muster

Das Business-Delegate-Muster wird verwendet, um die Präsentationsschicht und die Business-Schicht zu entkoppeln. Es dient grundsätzlich dazu, Kommunikations- oder Remote-Abfragefunktionalität von Code der Business-Schicht in Code der Präsentationsschicht zu reduzieren. In der Business-Schicht haben wir die folgenden Entitäten.

  • ClientDer Code der Präsentationsschicht kann JSP-, Servlet- oder Java-UI-Code sein.
  • Business Delegate- Eine Einstiegsklasse, die für Client-Entitäten bereitgestellt wird und Zugriff auf Business-Service-Methoden bietet.
  • Query Service (LookUp Service)Das Lookup-Service-Objekt ist dafür verantwortlich, die relevante Business-Implementierung zu beschaffen und Business-Objekten Zugriff auf das Business-Delegate-Objekt zu ermöglichen.
  • Business Service- Business-Service-Schnittstelle. Die Entitätsklasse, die diesen Business-Service implementiert, stellt die tatsächliche Business-Implementierungslogik bereit.

summary

Absicht

Abstrahieren und kapseln Sie die Zugriffslogik der Anwendung, wodurch die Präsentationsschicht Zugriff auf die Geschäftslogikschicht erhält.

Hauptproblem, das gelöst wird

  • Lösen Sie das Kopplungsproblem zwischen der Präsentationsschicht und der Geschäftslogikschicht, sodass die Präsentationsschicht über den Business Delegate indirekt auf die Geschäftslogikschicht zugreifen kann.

Anwendungsfall

  • Wenn in einer mehrschichtigen Anwendung die Notwendigkeit besteht, die Präsentationsschicht und die Geschäftslogikschicht klar zu trennen.

Implementierungsansatz

  • Business-Delegate-Schnittstelle: Methoden für den Zugriff auf die Geschäftslogik definieren.
  • Business-Delegate-Implementierung: Die Business-Delegate-Schnittstelle implementieren und die Logik für den Aufruf der Geschäftslogikschicht kapseln.
  • Business-Service: Schnittstelle oder Klasse der Geschäftslogikschicht, die Geschäftsoperationen enthält.

Schlüsselcode

  • Business-Delegate-Schnittstelle: Methoden für den Zugriff auf die Geschäftslogik deklarieren.
  • Business-Delegate-Implementierung: Die Schnittstelle implementieren, enthält Code, der den Business-Service aufruft.
  • Business-Service: Konkrete Implementierung der Geschäftslogik.

Anwendungsbeispiel

  • Web-Anwendung: Die Web-Schicht fungiert als Präsentationsschicht und greift über den Business Delegate auf die Backend-Service-Schicht zu.

Vorteile

  • Präsentationsschicht von der Geschäftslogikschicht entkoppeln: Der Business Delegate fungiert als Zwischenschicht, um die Kopplung zu reduzieren.
  • Zentralisierte Zugriffslogik: Vereinfachen Sie den Code der Präsentationsschicht, indem Sie die Zugriffslogik im Business Delegate zentralisieren.
  • Einfach zu warten und zu erweitern: Wenn ein neuer Zugriff auf die Geschäftslogik hinzugefügt wird, muss nur der Business Delegate geändert werden.

Nachteile

  • Kann die Komplexität erhöhen: Bei einfachen Anwendungen kann es unnötige Abstraktionsebenen hinzufügen.

Verwendungshinweise

  • Wenn Sie mehrschichtige Anwendungen entwickeln und eine klare Trennung zwischen der Präsentationsschicht und der Geschäftslogikschicht bereitstellen müssen, sollten Sie das Business Delegate Pattern in Betracht ziehen.

Hinweise

  • Der Business Delegate sollte so prägnant wie möglich sein und keine komplexe Logik enthalten.

Mehrere Hauptrollen sind beteiligt

  • Business-Delegate-Schnittstelle:

    • Methoden für den Zugriff auf die Geschäftslogik deklarieren.
  • Business-Delegate-Implementierung:

    • Die Business-Delegate-Schnittstelle implementieren und Aufrufe an Business-Services kapseln.
  • Business-Service:

    • Die Schnittstelle oder Klasse der Geschäftslogikschicht, die die eigentlichen Geschäftsvorgänge enthält.
  • Präsentationsschicht:

    • Das Frontend der Anwendung greift über den Business Delegate auf die Geschäftslogik zu.
  • Geschäftslogikschicht (Business Logic Layer):

    • Enthält die zentrale Geschäftslogik der Anwendung.

Das Business-Delegate-Muster bietet eine Abstraktionsschicht für den Zugriff auf die Geschäftslogik und hilft, die Flexibilität und Wartbarkeit der Anwendung zu erhalten.


Implementierung

Wir werdenClient、BusinessDelegate、BusinessService、LookUpService、JMSService erstellenundEJBServiceum die verschiedenen Entitäten im Business-Delegate-Muster darzustellen.

BusinessDelegatePatternDemoKlassenverwendungBusinessDelegateundClientUm die Verwendung des Business-Delegate-Musters zu demonstrieren.

业务代表模式的 UML 图

Schritt 1

Erstellen Sie die BusinessService-Schnittstelle.

BusinessService.java

public interface BusinessService { public void doProcessing(); }

Schritt 2

Erstellen Sie eine Entity-Service-Klasse.

EJBService.java

public class EJBService implements BusinessService { @Override public void doProcessing() { System.out.println("Verarbeitung der Aufgabe durch Aufruf des EJB-Service"); } }

JMSService.java

public class JMSService implements BusinessService { @Override public void doProcessing() { System.out.println("Verarbeitung der Aufgabe durch Aufruf des JMS-Service"); } }

Schritt 3

Erstellen Sie einen Business-Query-Service.

BusinessLookUp.java

public class BusinessLookUp { public BusinessService getBusinessService(String serviceType){ if(serviceType.equalsIgnoreCase("EJB")){ return new EJBService(); }else { return new JMSService(); } } }

Schritt 4

Erstellen Sie den Business Delegate.

BusinessDelegate.java

public class BusinessDelegate { private BusinessLookUp lookupService = new BusinessLookUp(); private BusinessService businessService; private String serviceType; public void setServiceType(String serviceType){ this.serviceType = serviceType; } public void doTask(){ businessService = lookupService.getBusinessService(serviceType); businessService.doProcessing(); } }

Schritt 5

Erstellen Sie den Client.

Client.java

public class Client { BusinessDelegate businessService; public Client(BusinessDelegate businessService){ this.businessService = businessService; } public void doTask(){ businessService.doTask(); } }

Schritt 6

Verwenden Sie die Klassen BusinessDelegate und Client, um das Business-Delegate-Muster zu demonstrieren.

BusinessDelegatePatternDemo.java

public class BusinessDelegatePatternDemo { public static void main(String[] args) { BusinessDelegate businessDelegate = new BusinessDelegate(); businessDelegate.setServiceType("EJB"); Client client = new Client(businessDelegate); client.doTask(); businessDelegate.setServiceType("JMS"); client.doTask(); } }

Schritt 7

Führen Sie das Programm aus und geben Sie die Ergebnisse aus:

Processing task by invoking EJB Service
Processing task by invoking JMS Service
Weitere Erweiterungen