1. 개요
GoF(Gang of Four)에서 소개한 브리지 디자인 패턴의 공식 정의는 구현에서 추상화를 분리하여 둘이 독립적으로 변경될 수 있도록 하는 것입니다.
이는 책임을 다른 추상 클래스로 분리하기 위해 OOP 원칙을 사용하는 브리지 인터페이스를 만드는 것을 의미합니다.
2. 브릿지 패턴 예시
브리지 패턴의 경우 두 가지 추상화 계층을 고려합니다. 하나는 다른 색상으로 채워진 기하학적 모양(삼각형 및 사각형과 같은)입니다(두 번째 추상화 레이어).
먼저 색상 인터페이스를 정의합니다.
public interface Color {
String fill();
}
이제 이 인터페이스에 대한 구체적인 클래스를 만듭니다.
public class Blue implements Color {
@Override
public String fill() {
return "Color is Blue";
}
}
이제 Color 개체 에 대한 참조(브리지)를 구성하는 추상 Shape 클래스를 만들어 보겠습니다 .
public abstract class Shape {
protected Color color;
//standard constructors
abstract public String draw();
}
이제 Color 인터페이스의 메서드도 활용하는 구체적인 Shape 인터페이스 클래스를 만듭니다 .
public class Square extends Shape {
public Square(Color color) {
super(color);
}
@Override
public String draw() {
return "Square drawn. " + color.fill();
}
}
이 패턴의 경우 다음 어설션이 참입니다.
@Test
public void whenBridgePatternInvoked_thenConfigSuccess() {
//a square with red color
Shape square = new Square(new Red());
assertEquals(square.draw(), "Square drawn. Color is Red");
}
여기서는 브리지 패턴을 사용하고 원하는 색상 개체를 전달합니다. 출력에서 알 수 있듯이 모양은 원하는 색상으로 그려집니다.
Square drawn. Color: Red
Triangle drawn. Color: Blue
3. 결론
이 기사에서는 브리지 디자인 패턴에 대해 살펴보았습니다. 이것은 다음과 같은 경우에 좋은 선택입니다.
- 부모 추상 클래스가 기본 규칙 집합을 정의하고 구체적인 클래스가 추가 규칙을 추가하려는 경우
- 객체에 대한 참조가 있는 추상 클래스가 있고 각 구체적인 클래스에서 정의될 추상 메서드가 있는 경우
이 예제의 전체 소스 코드는 GitHub에서 사용할 수 있습니다 .