# Business Delegate

Business Delegate ist ein Java-EE-Entwurfsmuster.
Bei mehrschichtigen Anwendungen erfolgen Methodenaufrufe zum Speichern und Auslesen von Daten über mehrere Schichten hinweg. Das Business Delegate Pattern wird verwendet, um die Präsentationsschicht (Presentation Tier) von der Geschäftslogik (Business Tier) zu entkoppeln. Grund für diese Vorgehensweise ist, dass eine zu starke Kopplung zwischen den beiden Schichten verschiedene Probleme hervorrufen kann.
So verhindert eine zu starke Kopplung oft eine optimale Wartung und Weiterentwicklung der verschiedenen Schichten oder einzelne Komponenten sind nur schwer auszutauschen. Des Weiteren ist die Präsentationsschicht labil gegenüber größeren Veränderungen in der Business-Schicht. Oft müssen in diesem Fall auch Änderungen in der Präsentationsschicht vorgenommen werden.
Um dies zu vermeiden, wird das Entwurfsmuster Business Delegate eingesetzt. Dadurch werden die internen Details der Implementierung der Geschäftslogik (z. B. JNDI-Lookup, RMI, Zugriff auf EJBs) für die Präsentationsschicht verborgen. Wie der Name delegate schon sagt, werden hier die Zugriffsfunktionen gekapselt und weitergeleitet.
Der Vorteil ist, dass die Präsentationsschicht leichter ausgetauscht werden kann, was besonders bei verschiedenen Clients von Nutzen ist. Die Business Delegate Klasse kann aber auch Ergebnisse puffern und dadurch die Rechenleistung signifikant verbessern. Ebenso können sehr technische Exceptions in für den Nutzer leichter verständliche Exceptions umgewandelt werden.
Werden Änderungen in der Implementierung der Business-Schicht vorgenommen, müssen nun nicht mehr alle Elemente der Präsentationsschicht geändert werden, sondern nur noch die Business-Delegate-Klassen.
Häufig gibt es in diesem Zusammenhang zusätzlich noch eine Business-Schnittstelle, welche die zur Verfügung stehenden Funktionalitäten der Business-Delegate-Klassen spezifiziert. Dadurch ist es möglich verschiedene Implementierungen des Business-Delegate-Musters bereitzustellen.

## Ausführliche Informationen

* Torsten Horn www.torsten-horn.de: Muster / Patterns. Abgerufen am 22. Oktober 2011.
* allapplabs.com: J2EE DESIGN PATTERNS. Abgerufen am 22. Oktober 2011 (englisch).
* oracle.com: Core J2EE Patterns - Business Delegate. Abgerufen am 12. Februar 2014 (englisch).
| Erzeugungsmuster | Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool |
| Strukturmuster | Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter |
| Verhaltensmuster | Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel |
| Muster für objekt- relationale Abbildung | Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation |
| Nachrichten- übermittlungsmuster | Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator | Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus | Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker | Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model | Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator | Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger |
| andere | Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object |