브릿지 패턴

'추상화'와 '구현'을 분리해서 이 둘을 독립적으로 다양화할 수 있도록 하는 패턴

  • 추상화는 구현에 의존적

  • 추상화 부분과 구현 부분이 각각 추상 클래스와 인터페이스로 따로 작성되어있음

  • 둘 사이에는 추상화 부분이 구현 부분을 참조함에 의한 '다리'가 놓여짐

  • 이처럼 서로 분리되어 작성되어 있기 때문에, 각각이 다른 클래스로 다양화될 수 있음

  • 다리로 연결된 채 분리되어 있기 때문에 각 부분이 변경되더라도 영향을 주지 않음

circle-info

하나의 과정을 세분화 될 수 있는 두 부분으로 나눌 수 있게된다.


1. 구현부

interface MessageSender {
  sendMessage(message: string): void
} 

class EmailSender implements MessageSender {
  sendMessage(message: string) {
    console.log(`sending email with message: ${message}`
  }
}

class SMSSender implements MessageSender {
  sendMessage(message: string) {
    console.log(`sending SMS with message: ${message}`)
  }
}

2. 추상화

3. 클라이언트 코드

Last updated