파사드 다양성

런던행·2020년 8월 8일
0

디자인 패턴

목록 보기
4/8

구조 디자인 패턴 개요

  • 구조 디자인 패턴은 객체와 클래스가 병합해 더 큰 구조를 만든다.

  • 객체의 관계를 더 쉽게 식별할 수 있는 디자인 패턴이다.

  • 클래스 패턴(The Class Pattern)은 상속을 통해 추상화해 인터페이스를 제공하는 반면에 객체 패턴은 한 개의 객체를 더 큰 객체로 확장시킨디. 구조 패턴은 두 패턴을 합친 형태이다.

구조 패턴의 예

  • 어탭터 패턴
  • 브릿지 패턴
  • 데코레이터 패턴

퍼사드 디자인 패턴

  • 서브시스템의 인터페이스를 통합시킨 단일 인터페이스를 제공해 클라이언트가 쉽게 서비시스템에 접근할 수 있게 한다.
  • 단일 인터페이스 객체로 복잡한 서브시스템을 대체한다.
  • 클라이언트와 내부 구현을 분리한다.

퍼사드 패턴 구현

시나리오 : 결혼식을 준비하는 당신

  • 클라이언트 : 결손식 전까지 모든 준비를 마쳐야 하는당신
  • 퍼사드 : 음식과 꼭 장식등을 준비하는 업체와의 조율을 담당하는 웨딩플래너
  • 서브 시스템: 음식과 호텔 예약, 꽃 장식등을 담당하는 업체들
# Sub System
class Hotelier(object):
    def __init__(self):
        print("Arraging the Hotel for Marrie")

    def bookHotel(self):
        print("Registered the Booking")

class Florist(object):
    def __init__(self):
        print("Arring the Florist")

    def arrangeFlorist(self):
        print("Arrange Florist")

# 퍼사드
class EventManager(object):
    def __init__(self):
        print("Event Manager")

    def arrage(self):
        self.hotelier = Hotelier()
        self.hotelier.bookHotel()

        self.florist = Florist()
        self.florist.arrangeFlorist()

# 클라이언트
class You(object):
    def __init__(self):
        print("You!!")

    def askEventManager(self):
        em = EventManager()
        em.arrage()

you = You()
you.askEventManager()
profile
unit test, tdd, bdd, laravel, django, android native, vuejs, react, embedded linux, typescript

0개의 댓글