Skip to content
Related Articles

Related Articles

Improve Article

Business Delegate Pattern

  • Last Updated : 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.




My Personal Notes arrow_drop_up
Recommended Articles
Page :