Bridge 패턴

뾰족머리삼돌이·2024년 9월 26일
0

디자인패턴

목록 보기
11/21

OOP의 주요 특징인 추상화와 상속을 이용하면 다른 클래스 또는 인터페이스의 기능을 가져오는게 가능하다.
즉, 현재 클래스에 기능을 직접 정의하지 않고도 다른 클래스에 정의된 기능을 가져오는게 가능하다.

Bridge 패턴은 OOP 특성을 이용하여 하나의 클래스 계층구조를 추상화와 구현계층으로 구분하여 관리하는 디자인패턴이다.
하나의 클래스 계층구조에서 공통되는 기능을 별개의 계층구조로 분리하고, 이를 두 클래스간의 연관관계로 표현한다.

Refactoring Guru에서 소개하는 위 예시를 참고하면 이해가 더 편하다.

이미지에서 최상위 모양 노드에서 분기되는 트리형태의 계층구조를 두 계층구조로 분리한 것을 확인할 수 있다.
여기서 모양은 추상화 계층 / 은 구현 계층으로 구분된다.

추상화 계층은 상위 레벨의 논리적인 개념을 정의한다.

앞선 이미지에서 모양은 추상화 계층에 해당한다.

원이나 직사각형 등 모양들이 가질 수 있는 공통적인 메서드나 특징들을 가지고있으며,
구현계층 타입의 필드를 사용하여 메서드에 동작흐름을 작성한다.


구현 계층은 실제 동작을 수행하는 구체적인 클래스들을 의미한다.

모양이 수행할 구체적인 동작이나 기능을 담당한다.
추상화 계층 메서드들은 구현계층의 필드를 이용하여 로직을 작성하며, 구현계층의 클래스에는 세부적인 동작이 작성된다.

하나의 클래스 계층구조를 두 가지로 분리함으로써 기존의 구조에 가해지던 책임을 나눌 수 있게되어 SCP를 준수한다.
또한, 인터페이스 타입의 필드를 통해 손쉽게 확장이 가능하므로 OCP도 준수한다.

예를들어, 리모컨과 전자기기의 관계를 생각해보자

일반적으로 전자기기(TV, 에어컨 등)은 각자의 리모컨을 보유하고 있다.
각 리모컨의 성능은 세부적인 차이는 있지만 공통적으로 기기를 켜거나 끄는 기능을 가지고 있다.

정리하자면 리모컨의 세부구현은 전자기기에 따라 달라지며, 전자기기는 리모컨에 의해 제어된다

즉, 전자기기에 따라 리모컨의 세부구현이 달라지므로 전자기기는 구현계층으로 분리가 가능하다.
각 리모컨의 공통적인 기능과 특징은 인터페이스로 묶어서 추상화계층의 상위 인터페이스로 작성할 수 있다.

정리하자면 전자기기는 구현 계층 / 리모컨은 추상화 계층으로 분리될 수 있다.
이렇게 되면 리모컨에 있는 전자기기 필드로 메서드 동작을 작성할 수 있다.

0개의 댓글

관련 채용 정보