diff --git a/business-delegate/src/main/java/com/iluwatar/App.java b/business-delegate/src/main/java/com/iluwatar/App.java index 71fd395ab..15dc5e079 100644 --- a/business-delegate/src/main/java/com/iluwatar/App.java +++ b/business-delegate/src/main/java/com/iluwatar/App.java @@ -3,6 +3,14 @@ package com.iluwatar; public class App { public static void main(String[] args) { - System.out.println("Hello World!"); + + BusinessDelegate businessDelegate = new BusinessDelegate(); + businessDelegate.setServiceType(ServiceType.EJB); + + Client client = new Client(businessDelegate); + client.doTask(); + + businessDelegate.setServiceType(ServiceType.JMS); + client.doTask(); } } diff --git a/business-delegate/src/main/java/com/iluwatar/BusinessDelegate.java b/business-delegate/src/main/java/com/iluwatar/BusinessDelegate.java new file mode 100644 index 000000000..3e20c81f4 --- /dev/null +++ b/business-delegate/src/main/java/com/iluwatar/BusinessDelegate.java @@ -0,0 +1,17 @@ +package com.iluwatar; + +public class BusinessDelegate { + + private BusinessLookup lookupService = new BusinessLookup(); + private BusinessService businessService; + private ServiceType serviceType; + + public void setServiceType(ServiceType serviceType) { + this.serviceType = serviceType; + } + + public void doTask() { + businessService = lookupService.getBusinessService(serviceType); + businessService.doProcessing(); + } +} diff --git a/business-delegate/src/main/java/com/iluwatar/BusinessLookup.java b/business-delegate/src/main/java/com/iluwatar/BusinessLookup.java new file mode 100644 index 000000000..f7bba0ca4 --- /dev/null +++ b/business-delegate/src/main/java/com/iluwatar/BusinessLookup.java @@ -0,0 +1,12 @@ +package com.iluwatar; + +public class BusinessLookup { + + public BusinessService getBusinessService(ServiceType serviceType) { + if (serviceType.equals(ServiceType.EJB)) { + return new EjbService(); + } else { + return new JmsService(); + } + } +} diff --git a/business-delegate/src/main/java/com/iluwatar/BusinessService.java b/business-delegate/src/main/java/com/iluwatar/BusinessService.java new file mode 100644 index 000000000..80fe4b273 --- /dev/null +++ b/business-delegate/src/main/java/com/iluwatar/BusinessService.java @@ -0,0 +1,6 @@ +package com.iluwatar; + +public interface BusinessService { + + void doProcessing(); +} diff --git a/business-delegate/src/main/java/com/iluwatar/Client.java b/business-delegate/src/main/java/com/iluwatar/Client.java new file mode 100644 index 000000000..7780e1abc --- /dev/null +++ b/business-delegate/src/main/java/com/iluwatar/Client.java @@ -0,0 +1,14 @@ +package com.iluwatar; + +public class Client { + + private BusinessDelegate businessDelegate; + + public Client(BusinessDelegate businessDelegate) { + this.businessDelegate = businessDelegate; + } + + public void doTask() { + businessDelegate.doTask(); + } +} diff --git a/business-delegate/src/main/java/com/iluwatar/EjbService.java b/business-delegate/src/main/java/com/iluwatar/EjbService.java new file mode 100644 index 000000000..0126cdc98 --- /dev/null +++ b/business-delegate/src/main/java/com/iluwatar/EjbService.java @@ -0,0 +1,9 @@ +package com.iluwatar; + +public class EjbService implements BusinessService { + + @Override + public void doProcessing() { + System.out.println("EjbService is now processing"); + } +} diff --git a/business-delegate/src/main/java/com/iluwatar/JmsService.java b/business-delegate/src/main/java/com/iluwatar/JmsService.java new file mode 100644 index 000000000..ae71a1ba0 --- /dev/null +++ b/business-delegate/src/main/java/com/iluwatar/JmsService.java @@ -0,0 +1,9 @@ +package com.iluwatar; + +public class JmsService implements BusinessService { + + @Override + public void doProcessing() { + System.out.println("JmsService is now processing"); + } +} diff --git a/business-delegate/src/main/java/com/iluwatar/ServiceType.java b/business-delegate/src/main/java/com/iluwatar/ServiceType.java new file mode 100644 index 000000000..6380bb8e6 --- /dev/null +++ b/business-delegate/src/main/java/com/iluwatar/ServiceType.java @@ -0,0 +1,6 @@ +package com.iluwatar; + +public enum ServiceType { + + EJB, JMS; +}