File tree

2 files changed

+53
-12
lines changed

2 files changed

+53
-12
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.premaseem;
22

3+
import me.premaseem.remotes.MasterRemoteFacade;
34
import me.premaseem.remotes.SetTopBoxRemote;
45
import me.premaseem.remotes.SoundSystemRemote;
56
import me.premaseem.remotes.TVRemote;
@@ -13,19 +14,21 @@ public class Client {
1314
public static void main (String[] args) {
1415
System.out.println("Master Remote Facade ");
1516

16-
// Client is tightly coupled with sub systems
17-
TVRemote tvRemote = new TVRemote();
18-
SoundSystemRemote soundSystemRemote = new SoundSystemRemote();
19-
SetTopBoxRemote setTopBoxRemote = new SetTopBoxRemote();
17+
// decoupled systems from client and moved to facade
18+
MasterRemoteFacade masterRemoteFacade = new MasterRemoteFacade();
2019

21-
// Turning ON requires several calls
22-
tvRemote.trunOn();
23-
soundSystemRemote.trunOn();
24-
setTopBoxRemote.trunOn();
20+
// Facade simplified code and reduced complexity
21+
masterRemoteFacade.turnOn();
22+
masterRemoteFacade.turnOFF();
2523

26-
// Turning OFF requires several calls
27-
tvRemote.trunOn();
28-
soundSystemRemote.trunOn();
29-
setTopBoxRemote.trunOn();
24+
// // Turning ON requires several calls
25+
// tvRemote.trunOn();
26+
// soundSystemRemote.trunOn();
27+
// setTopBoxRemote.trunOn();
28+
//
29+
// // Turning OFF requires several calls
30+
// tvRemote.trunOn();
31+
// soundSystemRemote.trunOn();
32+
// setTopBoxRemote.trunOn();
3033
}
3134
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package me.premaseem.remotes;
2+
3+
/*
4+
@author: Aseem Jain
5+
@title: Design Patterns with Java 9
6+
@link: https://premaseem.wordpress.com/category/computers/design-patterns/
7+
*/
8+
public class MasterRemoteFacade {
9+
10+
// sub system is de coupled from client
11+
private TVRemote tvRemote;
12+
private SoundSystemRemote soundSystemRemote;
13+
private SetTopBoxRemote setTopBoxRemote;
14+
15+
public MasterRemoteFacade(){
16+
tvRemote = new TVRemote();
17+
soundSystemRemote = new SoundSystemRemote();
18+
setTopBoxRemote = new SetTopBoxRemote();
19+
}
20+
21+
// Master turn on takes care of all sub systems
22+
public void turnOn(){
23+
System.out.println();
24+
System.out.println("Turning ON all sub systems");
25+
tvRemote.trunOn();
26+
soundSystemRemote.trunOn();
27+
setTopBoxRemote.trunOn();
28+
}
29+
30+
// Master turn off takes care of all sub systems
31+
public void turnOFF(){
32+
System.out.println();
33+
System.out.println("Turning OFF all sub systems");
34+
tvRemote.trunOff();
35+
soundSystemRemote.trunOff();
36+
setTopBoxRemote.trunOff();
37+
}
38+
}

0 commit comments

Comments
 (0)