본문 바로가기

프로그래밍 강의 메모/코딩으로 학습하는 GoF의 디자인 패턴_백기선

구조 관련 디자인 패턴 > 브릿지 패턴(Bridge Pattern)

https://inf.run/6Shr

 

코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의

디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할

www.inflearn.com

 

 

브릿지 패턴

구조 관련 디자인 패턴.

 

예제는 챔피언과 스킨으로 분리하여 연결하는 것이었다.

 

추상적인 것구체적인 것분리하여 연결하는 패턴.

하나의 계층 구조일 때 보다 각기 나누었을 때 독립적인 계층 구조로 발전시킬 수 있다.

 

브릿지 패턴을 사용하지 않고 하나의 계층구조로 코드를 작성하면,

계층 구조가 커지고,

다른 클래스와 닮아있고,

여러 조합이 생기고,

중복코드가 많은 것 같은 느낌을 줄것이다.

 

브릿지 패턴은 상속이 아닌 컴포지션을 사용한다.

‘둘로 나눠져 있으니 연결해서 사용한다’를 초점으로 살펴봐야 한다.

Client는 Implementation을 직접 사용하지 않고 추상적인 계층 구조만 사용한다.

Implementation을 간접적으로 사용한다.

 

 

 

 

Client가 Abstraction이라는 클래스를 의존하고 Abstraction은 Implementation이라는 인터페이스를 의존하는 구조로 패턴이 구성되어 있다. 

Abstraction

Client가 사용하고 고차원적인 로직을 담고있다.

Implementation

추상적인 개념의 다양한 변형체들.

구체적인 상태를 담고있다.

 

 

 

패턴 적용 예제

한 계층 구조로 만든다면 챔피언과 스킨의 무수한 조합으로 클래스가 생길 것이다.

 

하지만 브릿지 패턴으로 코드를 작성하였을 경우,

챔피언을 추가하고 싶을 때 스킨과 관계없이 챔피언만 추가 가능하고,

그 챔피언에 기존 스킨을 적용할 수 있게된다.

 

구현 코드는 챔피언 생성자를 호출할 때 스킨 인스턴스를 주입하는 방식으로 사용하고 있다.

챔피언 생성자를 구현할 때 스킨 인터페이스를 파라미터로 받기 때문에 스킨 구현체 어떤 것이든 주입받을 수 있다.

 

다른 계층 구조에 영향을 주지 않고 현재 계층 구조만 확장할 수 있다는 것이 핵심이다.

 

 

브릿지 패턴의 장점과 단점

장점

1. 추상적인 코드를 구체적인 코드 변경 없이도 독립적으로 확장할 수 있다.

2. 추상적인 코드구체적인 코드분리할 수 있다.

 

단점

계층 구조가 늘어나 복잡도가 증가할 수 있다.

하지만 브릿지 패턴을 학습한 이후는 이렇게 구성한 목적을 알게되고 구조를 빠르게 파악할 수 있게되기 때문에 크게 단점으로 느껴지지 않을 것이다.

 

 

 

 

 

 

https://refactoring.guru/ko/design-patterns/bridge

 

Bridge

The bigger a class becomes, the harder it is to figure out how it works, and the longer it takes to make a change. The changes made to one of the variations of functionality may require making changes across the whole class, which often results in making e

refactoring.guru