브릿지 패턴

2020-04-13

브릿지(Bridge) 패턴

GoF에 따르면 브릿지 패턴은 “구현으로 부터 추상화를 분리하여, 두 개가 독립적이게 변화가 가능해짐” 입니다. 브릿지 패턴의 구현은 상속 보다는 구성의 개념을 따르고 있습니다.

Color 인터페이스

public interface Color {
    public void applyColor();
}

Shape 추상 클래스

public abstract class Shape {
    //구성
    protected Color color;

    public Shape(Color color) {
        this.color = color;
    }

    abstract public void applyColor();
}

ShapeColor 사이는 구성기법을 이용해서 브릿지 패턴을 구현하였습니다.

Triangle 클래스

public class Triangle extends Shape {

    public Triangle(Color color) {
        super(color);
    }

    @Override
    public void applyColor() {
        System.out.print("삼각형이 색칠 됨.");
        color.applyColor();
    }
}

Pentagon 클래스

public class Pentagon extends Shape {

    public Pentagon(Color color) {
        super(color);
    }

    @Override
    public void applyColor() {
        System.out.print("오각형이 색칠 됨.");
        color.applyColor();
    }
}

RedColor 클래스

public class RedColor implements Color {
    @Override
    public void applyColor() {
        System.out.println("빨간색");
    }
}

GreenColor 클래스

public class GreenColor implements Color{
    @Override
    public void applyColor() {
        System.out.println("초록색");
    }
}

클라이언트 테스트

public class BridgePatternTest {
    public static void main(String[] args) {
        Shape tri = new Triangle(new RedColor());
        tri.applyColor();

        Shape pent = new Pentagon(new GreenColor());
        pent.applyColor();
    }
}

Console

삼각형이 색칠 됨.빨간색
오각형이 색칠 됨.초록색

브릿지 패턴을 써야 할 때

  • 브릿지 패턴은 구조적 패턴으로 구현으로 부터 추상화를 분리하여 두개가 독립적이게 변화될 때 사용 됩니다.
  • 브릿지 패턴은 추상클래스와 구현클래스 사이를 다리를 이어주는 패턴 입니다.
  • 브릿지 패턴은 캡슐화, 응집 , 상속을 통해 클래스의 책임을 분리하였습니다.
  • 브릿지 패턴은 두개의 클래스가 변화가 많이 일어날 때 사용됩니다. 주로 쉽게 바뀔 수 있는 클래스로 인해 사용 됩니다.