Open In App

Business Delegate Pattern

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



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 :

Disadvantages :

If you like GeeksforGeeks and would like to contribute, you can also write an article using

write.geeksforgeeks.org

or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.


Article Tags :