브릿지 패턴 (Bridge Pattern)은 구조 패턴 중 하나로 이는 소프트웨어에서 특정한 문제를 해결하기 위해 반복적으로 발생하는 구조를 식별하고, 그 구조에 따라 일반화된 해결책을 제시하는 것을 의미합니다
브릿지 패턴이란?
이름에서 유추할 수 있듯이 브릿지 패턴의 브릿지는 우리가 흔히 아는 다리를 뜻한다.
다리란 두 지점을 연결하는 구조물로 브릿지 패턴은 큰 클래스 또는 밀접하게 관련된 클래스들의 집합을 두 개의 개별 계층구조(추상화 및 구현)로 나눈 후 각각 독립적으로 개발할 수 있도록 하는 구조 디자인 패턴입니다.

● Abstraction : 기능 계층의 최상위 클래스. 구현 부분에 해당하는 클래스를 인스턴스를 가지고 해당 인스턴스를 통해 구현부분의 메서드를 호출합니다.
● RefindAbstraction : 기능 계층에서 새로운 부분을 확장한 클래스
● Implementor : Abstraction의 기능을 구현하기 위한 인터페이스 정의
● ConcreteImplementor : 실제 기능을 구현합니다.
브릿지 패턴 코드
인터페이스
public interface Widget {
public void draw();
public void onClick();
}
구현 클래스
public class Button implements Widget {
private String label;
public Button(String label) {
this.label = label;
}
@Override
public void draw() {
System.out.println("Button - Drawn");
}
@Override
public void onClick() {
System.out.println("Button - Clicked");
}
public String getLabel() {
return label;
}
}
public class Label implements Widget {
private String text;
public Label(String text) {
this.text = text;
}
@Override
public void draw() {
System.out.println("Label - Drawn");
}
@Override
public void onClick() {
System.out.println("Label - Clicked");
}
public String getText() {
return text;
}
}
추상화 클래스
public abstract class Window {
protected Widget widget;
public Window(Widget widget) {
this.widget = widget;
}
public void draw() {
System.out.println("Window - Drawing");
widget.draw();
}
public void onClick() {
System.out.println("Window - Handling click event");
widget.onClick();
}
public abstract void render();
}
public class Dialog extends Window {
public Dialog(Widget widget) {
super(widget);
}
@Override
public void render() {
System.out.println("Dialog - Rendering");
draw();
onClick();
}
}
클라이언트
public class Main {
public static void main(String[] args) {
Widget button = new Button("OK");
Widget label = new Label("Hello, World!");
Window dialog1 = new Dialog(button);
Window dialog2 = new Dialog(label);
dialog1.render();
dialog2.render();
}
}
참고 사이트