diff --git a/src/patterns/facade/Battery.java b/src/patterns/facade/Battery.java new file mode 100644 index 0000000..f9276c3 --- /dev/null +++ b/src/patterns/facade/Battery.java @@ -0,0 +1,12 @@ +package patterns.facade; + +public class Battery { + + public void on() { + System.out.println("Battery on"); + } + + public void off() { + System.out.println("Battery off"); + } +} diff --git a/src/patterns/facade/CPU.java b/src/patterns/facade/CPU.java new file mode 100644 index 0000000..7f13b34 --- /dev/null +++ b/src/patterns/facade/CPU.java @@ -0,0 +1,12 @@ +package patterns.facade; + +public class CPU { + + public void bootLoad() { + System.out.println("CPU boot loaded"); + } + + public void shutDown() { + System.out.println("CPU shutdown"); + } +} diff --git a/src/patterns/facade/ClientFacadePatternExample.java b/src/patterns/facade/ClientFacadePatternExample.java new file mode 100644 index 0000000..741b863 --- /dev/null +++ b/src/patterns/facade/ClientFacadePatternExample.java @@ -0,0 +1,14 @@ +package patterns.facade; + +public class ClientFacadePatternExample { + + public static void main(String[] args) { + + MobileFacade facade = new MobileFacade(); + Mobile mobile = facade.on(); + + System.out.println("---------------"); + + facade.off(mobile); + } +} diff --git a/src/patterns/facade/GPSService.java b/src/patterns/facade/GPSService.java new file mode 100644 index 0000000..73a43a0 --- /dev/null +++ b/src/patterns/facade/GPSService.java @@ -0,0 +1,13 @@ +package patterns.facade; + +public class GPSService implements MobileService { + @Override + public void start() { + System.out.println("GPS Service started"); + } + + @Override + public void close() { + System.out.println("GPS Service closed"); + } +} diff --git a/src/patterns/facade/Mobile.java b/src/patterns/facade/Mobile.java new file mode 100644 index 0000000..3ec4404 --- /dev/null +++ b/src/patterns/facade/Mobile.java @@ -0,0 +1,30 @@ +package patterns.facade; + +import java.util.List; + +public class Mobile { + + private final Battery battery; + private final CPU cpu; + private final List mobileServices; + + public Mobile(Battery battery, CPU cpu, List mobileServices) { + this.battery = battery; + this.cpu = cpu; + this.mobileServices = mobileServices; + } + + public CPU getCpu() { + return cpu; + } + + public Battery getBattery() { + return battery; + } + + public List getMobileServices() { + return mobileServices; + } + + +} diff --git a/src/patterns/facade/MobileFacade.java b/src/patterns/facade/MobileFacade.java new file mode 100644 index 0000000..bdb667e --- /dev/null +++ b/src/patterns/facade/MobileFacade.java @@ -0,0 +1,37 @@ +package patterns.facade; + +import java.util.Arrays; +import java.util.List; + +public class MobileFacade { + + public Mobile on() { + + Battery battery = new Battery(); + battery.on(); + + CPU cpu = new CPU(); + cpu.bootLoad(); + + MobileService gps = new GPSService(); + gps.start(); + + MobileService wifi = new WifiSevice(); + wifi.start(); + + List mobileServices = Arrays.asList(gps, wifi); + + Mobile mobile = new Mobile(battery, cpu, mobileServices); + + return mobile; + } + + public void off(Mobile mobile) { + + for(MobileService service :mobile.getMobileServices()) { + service.close(); + } + mobile.getCpu().shutDown(); + mobile.getBattery().off(); + } +} diff --git a/src/patterns/facade/MobileService.java b/src/patterns/facade/MobileService.java new file mode 100644 index 0000000..57122d3 --- /dev/null +++ b/src/patterns/facade/MobileService.java @@ -0,0 +1,8 @@ +package patterns.facade; + +public interface MobileService { + + void start(); + void close(); + +} diff --git a/src/patterns/facade/WifiSevice.java b/src/patterns/facade/WifiSevice.java new file mode 100644 index 0000000..a018362 --- /dev/null +++ b/src/patterns/facade/WifiSevice.java @@ -0,0 +1,13 @@ +package patterns.facade; + +public class WifiSevice implements MobileService { + @Override + public void start() { + System.out.println("WIFI Service started"); + } + + @Override + public void close() { + System.out.println("WIFI Service started"); + } +}