The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. Facade defines a higher level interface that makes the subsystem easier to use.
An example of the Facade Design Pattern follows:
public class Television {
public void on() { ... }
public void off() { ... }
public void channelUp { ... }
public void channelDown() { ... }
}
public class DVD {
public void on() { ... }
public void off() { ... }
public void play() { ... }
public void pause() { ... }
}
public class Receiver {
public void on() { ... }
public void off() { ... }
public void volumeUp() { ... }
public void volumeDown() { ... }
public void inputDVD() { ... }
public void inputTuner() { ... }
}
public class FacadeExample {
Television tv;
DVD dvd;
Receiver receiver;
// Combine many actions/different objects into a simpler interface
public void watchMovie(String movieName) {
tv.on();
dvd.on();
receiver.on()
receiver.inputDVD();
receiver.volumeUp();
dvd.play();
}
public void endMovie() {
dvd.off();
receiver.off();
tv.off();
}
}