Open In App
Related Articles

Business Delegate Pattern

Improve Article
Improve
Save Article
Save
Like Article
Like

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.

Java




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.

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. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.


Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!

Last Updated : 30 Oct, 2023
Like Article
Save Article
Previous
Next
Similar Reads