Skip to content

Instantly share code, notes, and snippets.

@DoRightt
Created June 9, 2020 09:14
Show Gist options
  • Save DoRightt/f7f4623fb9c10dd0343a624a2ca47225 to your computer and use it in GitHub Desktop.
Save DoRightt/f7f4623fb9c10dd0343a624a2ca47225 to your computer and use it in GitHub Desktop.
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