Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Node
- 하프가드
- 드릴
- development
- 영화감상
- Redux
- 영화
- web
- 영화리뷰
- 디자인패턴
- Express
- nodejs
- git
- 주짓떼라
- 클로즈가드
- 파이썬
- REACT
- 웹개발
- 프로그래밍
- 리액트
- 개발
- JavaScript
- 노드
- graphQL
- 엄티로드
- 개발자
- 주짓떼로
- 주짓수
- 자바스크립트
- 솔로드릴
Archives
- Today
- Total
As i wish
[Design pattern] Facade pattern (퍼사드패턴) 본문
이번엔 퍼사드 패턴에 대하여 포스팅 해보겠습니다.
퍼사드 패턴은 어댑터 패턴과 상당히 비슷하기 때문에
두개를 비교해 가시면서 보시면 훨씬 쉬울것 같네요.
일단 정의 부터..
퍼사드 패턴
어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다.
예를 들어 영화를 본다고 생각했을 때에
1. 팝콘 기계를 켠다.
2. 팝콘 튀기기 시작
3. 전등을 어둡게 조절
4. 스크린을 내린다
5. 프로젝터를 켠다
6. 프로젝터.....
이렇게 쭈욱 일련의 과정들이 있죠.
간단하게 이런 일련의 과정들을 묶어주는것이라고 생각하면 쉽다.
바로 코드로 확인해보면 한눈에 쉽게 확인 할 수 있다.
# -*- coding: utf-8 -*-
# Facade Pattern
import abc
class HomeTheaterFacade:
def __init__(self, amp, tuner, dvd, cd, projector, screen, lights, popper):
self.amp = amp
self.tuner = tuner
self.dvd = dvd
self.cd = cd
self.projector = projector
self.screen = screen
self.lights = lights
self.popper = popper
def watchMovie(self, dvd):
self.popper.on()
self.popper.pop()
self.lights.dim(10)
self.screen.down()
self.projector.on()
self.projector.wideScreenMovie()
self.amp.on()
self.amp.setDvd(dvd)
self.amp.setSurround()
self.amp.setVolume(5)
self.dvd.on()
self.dvd.play()
class Amp:
def on(self):
print("Amp on")
def setDvd(self, dvd):
print("Set dvd %s" % dvd)
def setSurround(self):
print("Set surround")
def setVolume(self, volume):
print("Set volume %s" % volume)
class Tuner:
pass
class Dvd:
def on(self):
print("Dvd on")
def play(self):
print("Dvd play")
class Cd:
pass
class Projector:
def on(self):
print("Projector on")
def wideScreenMovie(self):
print("Projector widescreenmovie")
class Screen:
def down(self):
print("Screen down")
class Lights:
def dim(self, dim):
print ("Light dim %s" % dim)
class Popper:
def on(self):
print("Popper on")
def pop(self):
print("Popper pop")
amp = Amp()
tuner = Tuner()
dvd = Dvd()
cd = Cd()
projector = Projector()
screen = Screen()
lights = Lights()
popper = Popper()
homeTheater = HomeTheaterFacade(amp, tuner, dvd, cd, projector,
screen, lights, popper)
homeTheater.watchMovie('FACADEPATTER DVD')
HomeTheaterFacade 가 Facade클래스라고 생각하면된다.
이렇게 사용하면 원래 사용하던 Amp, Tuner, Dvd 등등 역시 그대로 사용할 수 있게 된다.
마지막으로 결과창이닷
'Design Pattern' 카테고리의 다른 글
[Design pattern] Template method pattern (템플릿 메서드 패턴) (0) | 2019.05.05 |
---|---|
[Design pattern] 데코레이터 vs 어댑터 vs 퍼사드 패턴 (0) | 2019.04.22 |
[Design pattern] Adapter pattern (어댑터패턴) (0) | 2019.04.22 |
[Design pattern] Command pattern (커멘드패턴) (0) | 2019.03.31 |
[Design pattern] Singleton pattern (싱글톤 패턴) (0) | 2019.03.10 |
Comments