일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오류
- django-debug-toolbar
- html
- csrf_token
- 디자인 패턴
- pytorch
- 인공지능
- DB
- 웹서버
- 프론트엔드
- 데이터베이스
- css
- 웹프로그래밍
- pyvenv.cfg
- 파이썬
- 리눅스
- 디자인패턴
- MySQL
- python
- AI
- vscode
- 백엔드
- javascript
- 개발환경
- 파이토치
- Design Pattern
- Django
- 프로그래밍
- Linux
- java
- Today
- Total
Shong Studio의 정보 창고
[디자인 패턴] Bridge Pattern (브릿지 패턴) - 직관적인 설명 & 예시 본문
Bridge Pattern 이란?
브릿지 패턴(Bridge Pattern)은 구조적 디자인 패턴의 일종으로, 추상화(abstraction)와 구현(implementation)을 분리하여 서로 독립적으로 변형할 수 있도록 해줍니다.
이 패턴의 목적은 구현 부분에 대한 변경이 추상화에 영향을 미치지 않도록 하여, 두 부분을 독립적으로 확장할 수 있게 하는 것입니다.
브릿지 패턴은 종종 인터페이스와 구현을 분리하여 각각을 독립적으로 개발하고 확장할 수 있도록 할 때 사용됩니다.
Bridge Pattern을 사용해야하는 이유는?
- 플랫폼 독립적인 구조를 만들고 싶을 때: 여러 플랫폼에서 실행될 수 있는 소프트웨어를 개발할 때, 브릿지 패턴을 사용하여 플랫폼에 의존적인 코드를 분리할 수 있습니다.
- 구현을 변경하면서도 추상화된 인터페이스에 영향을 주지 않고 싶을 때: 브릿지 패턴을 사용하면 구현을 추상화로부터 완전히 분리하여, 추상화된 인터페이스를 변경하지 않고도 구현을 자유롭게 변경할 수 있습니다.
- 여러 차원에서 클래스를 확장해야 할 때: 예를 들어, UI 요소를 다양한 운영 체제에서 다른 방식으로 구현해야 할 때, 각 운영 체제에 대한 구현과 UI 요소의 추상화를 분리하여 관리할 수 있습니다.
Bridge Pattern을 어떻게 사용하는지 알아보자.
브릿지 패턴의 주요 구성 요소
- 추상화(Abstraction): 고수준의 제어 로직을 정의합니다. 추상화는 구현부(Implementor)에 대한 참조를 유지하며, 자신의 기능을 구현부를 통해 실행합니다.
- 구현화(Implementor): 추상화에 의해 정의된 인터페이스를 실제로 구현하는 클래스들의 인터페이스입니다.
- 구체적 구현화(Concrete Implementor): 구현화 인터페이스를 실제로 구현하는 클래스입니다. 다양한 구현이 존재할 수 있으며, 추상화를 통해 제공되는 기능을 실제로 실행합니다.
- 정제된 추상화(Refined Abstraction): 추상화 클래스를 확장하여 더 구체적인 기능을 제공하는 클래스입니다.
작동 원리
- 추상화는 구현 부분에 대한 참조를 통해 구현 부분의 메서드를 호출합니다. 이를 통해 실제 작업을 구현 부분에 위임합니다.
- 클라이언트는 추상화를 통해 작업을 요청합니다. 추상화는 이러한 요청을 적절한 구현 부분에 전달하여 결과를 얻습니다.
- 구현화와 추상화는 서로 독립적으로 확장될 수 있습니다. 새로운 구현화를 추가하거나 추상화를 수정해도, 다른 부분에 영향을 미치지 않습니다.
구조
Shape이라는 Abstraction 클래스 내에서 Rectangle, Circle이 상속받아 draw를 하고 있고 추 후엔 Star, triangle 등등 무수히 많은 모형이 쏟아져 확장될 수 있습니다.
이 때 Drawing 방법이 V1, V2 외에 또 V3, V4 ... 등장하게 되면 관리가 굉장히 어려워 집니다. ( 아래에 왜 어려워지는지 구조를 확인하실 수 있습니다. )
따라서 Bridge pattern을 이용해서 의존성을 낮춰 확장성을 용이한 구조를 만들 수 있습니다.
★★ 언뜻 봤을 때 Strategy pattern과 같은 방법 아닌가 의문을 가질 수 있습니다.
맞는 말입니다. 구조로만 봤을 때 거의 같은 구조를 띄는 것을 알 수 있습니다.
먼저 알아두어야 할 것은 디자인 패턴은 특별한 언어를 만드는 것이 아닌 같은 프로그래밍으로 여러 프로그램이 개발되면서 많은 개발자들의 경험이 녹아들었다는 것을 인지하셔야합니다.
따라서 비슷한 느낌의 디자인 패턴을 많이 보실 수 있으십니다.
중요한 것은 눈에 보이는 구조가 아닌 그 구조를 사용하게된 목적과 의도에 있습니다.
브릿지 패턴을 이용하지 않았을 때의 구조
'디자인 패턴' 카테고리의 다른 글
[디자인 패턴] Factory Method와 Abstract Factory (1) | 2024.10.14 |
---|---|
[디자인 패턴] Adapter Pattern (어댑터 패턴) - 직관적인 설명 & 예시 (0) | 2024.03.27 |
[디자인 패턴] Iterator Pattern (반복자 패턴) - 직관적인 설명 & 예시 (0) | 2024.03.25 |
[디자인 패턴] State Pattern (상태 패턴) - 직관적인 설명 & 예시 (2) | 2024.03.23 |
[디자인 패턴] Strategy Pattern (전략 패턴) - 직관적인 설명 & 예시 (0) | 2024.03.23 |