Business Delegate Pattern - GeeksforGeeks

08 Feb, 2018
The Business Delegate acts as a client-side business abstraction, it provides an abstraction for, and thus hides, the implementation of the business services. It reduces the coupling between presentation-tier clients and the system’s Business services.
UML Diagram Business Delegate Pattern
Design components
Business Delegate : A single entry point class for client entities to provide access to Business Service methods.
LookUp Service : Lookup service object is responsible to get relative business implementation and provide business object access to business delegate object.
Business Service : Business Service interface. Concrete classes implement this business service to provide actual business implementation logic.
Let’s see an example of Business Delegate Pattern.
interface BusinessService{    public void doProcessing();}  class OneService implements BusinessService{    public void doProcessing()     {        System.out.println("Processed Service One");    }}  class TwoService implements BusinessService {    public void doProcessing()     {        System.out.println("Processed Service Two");    }}  class BusinessLookUp {    public BusinessService getBusinessService(String serviceType)    {        if(serviceType.equalsIgnoreCase("One"))        {            return new OneService();        }        else        {            return new TwoService();        }   }}  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();            }}  class Client {    BusinessDelegate businessService;      public Client(BusinessDelegate businessService)    {        this.businessService  = businessService;    }      public void doTask()    {                businessService.doTask();    }}  class BusinessDelegatePattern{    public static void main(String[] args)    {        BusinessDelegate businessDelegate = new BusinessDelegate();        businessDelegate.setServiceType("One");          Client client = new Client(businessDelegate);        client.doTask();          businessDelegate.setServiceType("Two");        client.doTask();    }}
Output:
Processed Service One
Processed Service Two

Advantages :
Business Delegate reduces coupling between presentation-tier clients and Business services.
The Business Delegate hides the underlying implementation details of the Business service.
Disadvantages :
Maintenance due the extra layer that increases the number of classes in the application.
This article is contributed by Saket Kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Design Pattern
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Command Pattern
Strategy Pattern | Set 1 (Introduction)
Template Method Design Pattern
State Design Pattern
Conceptual Model of the Unified Modeling Language (UML)
Visitor design pattern
Difference between Sequence Diagram and Activity Diagram
Flyweight Design Pattern
Difference Between Architectural Style, Architectural Patterns and Design Patterns