Created
June 9, 2020 09:14
-
-
Save DoRightt/f7f4623fb9c10dd0343a624a2ca47225 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Amplifier { | |
tunner: Tunner; | |
dvdPlayer: DvdPlayer; | |
cdPlayer: CdPlayer; | |
constructor(tunner: Tunner, dvd: DvdPlayer, cd: CdPlayer) { | |
this.tunner = tunner; | |
this.dvdPlayer = dvd; | |
this.cdPlayer = cd; | |
} | |
on() { | |
console.log("Amplifier on..."); | |
} | |
off() { | |
console.log("Amplifier off..."); | |
} | |
setCd(cd: any) { | |
console.log(`Will be watch - ${cd}`); | |
} | |
setDvd(dvd: any) { | |
console.log(`Will be watch - ${dvd}...`); | |
} | |
setStereoSound() {} | |
setSurroundSound() { | |
console.log("Set surround sound..."); | |
} | |
setTunner() {} | |
setVolume(val: number) { | |
console.log(`Set volume as ${val}...`); | |
} | |
} | |
class DvdPlayer { | |
on() { | |
console.log("Dvd player on..."); | |
} | |
off() { | |
console.log("Dvd player off..."); | |
} | |
eject() { | |
console.log("Dvd player eject..."); | |
} | |
play() { | |
console.log("Start dvd..."); | |
} | |
pause() { | |
console.log("Pause dvd..."); | |
} | |
stop() { | |
console.log("Dvd stop..."); | |
} | |
} | |
class CdPlayer { | |
on() { | |
console.log("Cd player on..."); | |
} | |
off() { | |
console.log("Cd player off..."); | |
} | |
eject() { | |
console.log("Cd player eject..."); | |
} | |
play() { | |
console.log("Start cd..."); | |
} | |
pause() { | |
console.log("Pause cd..."); | |
} | |
stop() { | |
console.log("Cd stop..."); | |
} | |
} | |
class Tunner { | |
on() {} | |
off() {} | |
setAm() {} | |
setFm() {} | |
} | |
class HomeScreen { | |
up() { | |
console.log("screen is up..."); | |
} | |
down() { | |
console.log("screen is down..."); | |
} | |
} | |
class PopcornPopper { | |
on() { | |
console.log("Popcorn popper is on..."); | |
} | |
off() { | |
console.log("Popcorn popper is off..."); | |
} | |
pop() { | |
console.log("Popcorn is ready..."); | |
} | |
} | |
class TheaterLights { | |
on() { | |
console.log("lights on..."); | |
} | |
off() { | |
console.log("lights off..."); | |
} | |
} | |
class Projector { | |
on() { | |
console.log("Projector is on..."); | |
} | |
off() { | |
console.log("Projector is off..."); | |
} | |
wideScreenMode() { | |
console.log("Projecter in full screen now..."); | |
} | |
} | |
class HomeTheaterFacade { | |
amp: Amplifier; | |
cd: CdPlayer; | |
dvd: DvdPlayer; | |
tunner: Tunner; | |
popper: PopcornPopper; | |
projector: Projector; | |
lights: TheaterLights; | |
screen: HomeScreen; | |
constructor( | |
amp: Amplifier, | |
cd: CdPlayer, | |
dvd: DvdPlayer, | |
tunner: Tunner, | |
popper: PopcornPopper, | |
projector: Projector, | |
lights: TheaterLights, | |
screen: HomeScreen | |
) { | |
this.amp = amp; | |
this.cd = cd; | |
this.dvd = dvd; | |
this.tunner = tunner; | |
this.popper = popper; | |
this.projector = projector; | |
this.lights = lights; | |
this.screen = screen; | |
} | |
watchMovie() { | |
console.log("Start proccess for watching movie..."); | |
this.popper.on(); | |
this.popper.pop(); | |
this.lights.off(); | |
this.screen.down(); | |
this.projector.on(); | |
this.projector.wideScreenMode(); | |
this.amp.on(); | |
this.amp.setDvd("Die hard"); | |
this.amp.setSurroundSound(); | |
this.amp.setVolume(5); | |
this.dvd.on(); | |
this.dvd.play(); | |
console.log("Motor!"); | |
} | |
endMovie() { | |
console.log("Shutting movie thater down..."); | |
this.popper.off(); | |
this.lights.on(); | |
this.screen.up(); | |
this.projector.off(); | |
this.amp.off(); | |
this.dvd.stop(); | |
this.dvd.eject(); | |
this.dvd.off(); | |
} | |
} | |
const tunner = new Tunner(); | |
const dvd = new DvdPlayer(); | |
const cd = new CdPlayer(); | |
const popper = new PopcornPopper(); | |
const projector = new Projector(); | |
const homeScreen = new HomeScreen(); | |
const lights = new TheaterLights(); | |
const amp = new Amplifier(tunner, dvd, cd); | |
const theater = new HomeTheaterFacade( | |
amp, | |
cd, | |
dvd, | |
tunner, | |
popper, | |
projector, | |
lights, | |
homeScreen | |
); | |
theater.watchMovie(); | |
theater.endMovie(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment