브릿지 패턴이란

- 추상적인 것(행동)과 구체적인 것(상태)을 분리하고 연결하는 패턴. 이때 컴포지트 패턴으로 연결한다.
- 독립적인 계층 구조로 발전시킬 수 있다.
- 추상 : Abstraction, Refined Abstraction
- 구체 : Implementation, Concrete Implementation
- 클라이언트는 추상 계층의 인터페이스만 볼 수 있다.
- 예시 : 롤 챔피언들과 스킨 표현
- 요구사항 : 챔피언은 특정 키가 눌렸을 때 실행하는 동작이 있음. 챔피언은 여러 스킨을 가짐. 스킨이 스킬을 가질 수도 있고 그냥 스킨만 있을 수도 있음.
- 패턴 적용 안한 경우 : 스킨 x 챔피언 별로 클래스 생성, 같은 인터페이스 구현해 스킬 로직 작성. 중복 코드 많아짐
- 패턴 적용 : 추상 - 챔피언의 동작, 구체 - 각 챔피언들의 스킨
구현하기
추상적인 계층
public interface Champion {
void move();
void skillQ();
void skillW();
void skillE();
void skillR();
}
Refined Abstraction