Published May 06, 2022
[
 
]
How do you turn on the computer? “Hit the power button” you say! That is what you believe because you are using a simple interface that computer provides on the outside, internally it has to do a lot of stuff to make it happen. This simple interface to the complex subsystem is a facade.
Facade pattern provides a simplified interface to a complex subsystem.
A facade is an object that provides a simplified interface to a larger body of code, such as a class library.
Taking our computer example from above. Here we have the computer class
class Computer {
getElectricShock(){
console.log('Ouch!')
}
makeSound(){
console.log('Beep beep!')
}
showLoadingScreen(){
console.log('Loading..')
}
bam(){
console.log('Ready to be used!')
}
closeEverything(){
console.log('Bup bup bup buzzz!')
}
sooth(){
console.log('Zzzzz')
}
pullCurrent(){
console.log('Hahah!')
}
}
Here we have the facade
class ComputerFacade {
protected computer;
constructor(computer: Computer) {
this.computer = computer;
}
turnOn(){
this.computer.getElectricShock();
this.computer.makeSound();
this.computer.showLoadingScreen();
this.computer.bam();
}
turnOff(){
this.computer.closeEverything()
this.computer.pullCurrent()
this.computer.sooth()
}
}
Now to use the facade
let computer = new ComputerFacade(new Computer())
computer.turnOn()
computer.turnOff()