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();
}
}