반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
12주차. Facade 본문
728x90
반응형
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다.
틀린 부분은 알려주시면 감사하겠습니다.
어떤 패턴인가
한 서브시스템 내의 인터페이스 집합에 대한 획일화된 하나의 인터페이스(관리자)를 제공하는 패턴으로, 서브시스템을 사용하기 쉽도록 상위 수준의 인터페이스를 정의합니다.
사용자가 다루어야할 객체의 수가 줄어들며, 서브시스템을 쉽게 사용할 수 있다.
서브시스템과 사용자 코드 간의 결합도를 약하게 만든다.
어떻게 쓰는가
Facade: 단순하고 일관된 통합 인터페이스를 제공하며, 서브세스템을 구성하는 어떤 클래스가 어떤 요청을 처리해야 하는지 알고 있으며, 사용자의 요청을 해당 서브시스템 객체에 전달합니다.
서브시스템 클래스들: 서브시스템의 기능을 구현하고, Facade 객체로 할당된 작업을 실제로 처리하지만 Facade에 대한 아무런 정보가 없습니다.
class Subsystem1:
def play(self):
print('Play Music')
class Subsystem2:
def stop(self):
print('Stop Music')
class Subsystem3:
def pause(self):
print('Pause Music')
class Facade:
def __init__(self):
self.one = Subsystem1()
self.two = Subsystem2()
self.three = Subsystem3()
-----------------------------------------------------
f = Facade()
f.one.play()
f.three.pause()
f.two.stop()
어디서 활용되는가
이는 책의 내용 (p. 255)을 그대로 가져왔다.
1. 복잡한 서브시스템에 대한 단순한 인터페이스 제공이 필요할 때
2. 추상 개념에 대한 구현 클래스와 사용자 사이에 너무 많은 종속성이 존재할 때
3. 서브시스템을 계층화시킬 때
Adapter 패턴과 차이는 무엇인가
Adapter는 기존에 사용하던 클래스를 원하는 대로 바꾸기 위해 사용하는 개념(1:1 매칭으로)이라면, Facade는 총괄하는 느낌이다.
My Opinion
서브클래스의 수가 많을 때 이를 각각 다루기 어지러워지므로, 이 때 Facade 패턴을 사용하면 편하다.
이 패턴은 종종 사용하게될 것 같다.
728x90
반응형
'스터디 > 디자인 패턴' 카테고리의 다른 글
14주차-1. Observer (0) | 2021.09.23 |
---|---|
13주차. Mediator (0) | 2021.09.09 |
11주차. Builder (0) | 2021.08.11 |
10주차. Memento (0) | 2021.07.28 |
9주차-2. Command (0) | 2021.07.21 |
Comments