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에서 사용할 수 있습니다 .

Generic footer banner