HooneyLog
© 2026 Seunghoon Shin. All rights reserved.
모든 게시글
typescript
2022. 7. 30.•
6

Facade Pattern

Seunghoon Shin
작성자 Seunghoon Shin풀스택 개발자

What is Facade Pattern?

you can use this pattern to hide highly some complexity codes behind a method, which makes your codes so much clearer.

Example

I’m going to watch a movie at my home.

But, I need to do lots of things to do it. I need popcorn, coke, dimmed light, TV, video..

They are pretty a lot, but I don’t want to expose complex codes. Therefore, I’m going to make codes by using facade pattern

class PopcornMaker { turnOn() { console.log("Turn on popcorn maker"); } pop() { console.log("Popping") } } class Beverage { getCoke() { console.log('Getting a cup of coke'); } } class Light { dim() { console.log("Lights are dimming") } } class TV { turnOn() { console.log("Turn on TV"); } } class Video { play() { console.log("Playing a video") } } class HomeTheaterFacade { private popconMaker:PopcornMaker; private beverage:Beverage; private light:Light; private tv:TV; private video:Video; constructor(popconMaker:PopcornMaker,beverage:Beverage, light:Light,tv:TV,video:Video) { this.popconMaker = popconMaker; this.beverage = beverage; this.light = light; this.tv = tv; this.video = video } watchMovie() { this.popconMaker.turnOn(); this.popconMaker.pop(); this.beverage.getCoke(); this.light.dim(); this.tv.turnOn(); this.video.play(); } } const popconMaker = new PopcornMaker(); const beverage = new Beverage(); const light = new Light(); const tv = new TV(); const video = new Video(); const homeTheater = new HomeTheater(popconMaker,beverage,light,tv,video); homeTheater.watchMovie();

Conclusion

As you see, you don’t have to know complex codes in “watchMovie” method to understand what the method do and it is so clean that it is easy to refactor in the future.

← 이전 글효율적인 데이터 관리를 위한 TypeScript Array Grouping 구현하기
다음 글 →Adapter Pattern