Bridge Pattern은 디자인 패턴 중 하나로, 객체의 인터페이스와 구현을 분리하여 각각 독립적으로 변경할 수 있는 방법을 제공합니다. 객체지향 프로그래밍에서 추상화와 구현을 분리하면 유연하고 확장 가능한 코드를 작성할 수 있습니다. 이번에는 Bridge Pattern이 무엇인지, 그리고 추상화와 구현의 분리를 통해 유연하고 확장 가능한 코드를 작성하는 방법을 알아보겠습니다.

Bridge Pattern란 무엇인가?

Bridge Pattern은 구조 패턴 중 하나로, 추상화와 구현을 분리하여 시스템의 확장성과 변화에 대응하는 방법을 제공합니다. Bridge Pattern은 추상적인 부분과 구체적인 구현부분을 분리하여 각각 독립적으로 변경할 수 있는 구조를 만듭니다. 이 방법을 사용하면 추상화된 인터페이스와 구현부를 느슨하게 결합하여 시스템의 유지보수와 확장성을 향상시킬 수 있습니다.

추상화와 구현의 분리를 통한 유연한 코드 작성 방법

추상화와 구현의 분리를 통해 유연하고 확장 가능한 코드를 작성하는 방법은 다음과 같습니다.

  1. 추상화된 인터페이스를 정의합니다. 이 인터페이스는 구현부와 독립적이며, 추상화된 기능을 정의합니다.
  2. 구현부 클래스를 정의합니다. 추상화된 인터페이스를 구현하는 클래스입니다. 이 클래스는 추상화된 인터페이스와 독립적으로 변경될 수 있으며, 실제 기능을 구현합니다.
  3. 추상화된 인터페이스를 사용하는 클라이언트 클래스를 정의합니다. 이 클래스는 추상화된 인터페이스를 사용하여 기능을 수행합니다. 이 클래스는 구현부를 알 필요가 없으며, 추상화된 인터페이스를 사용하여 기능을 수행합니다.
  4. 구현부 클래스를 사용하는 클래스를 정의합니다. 이 클래스는 추상화된 인터페이스와 구현부 클래스를 함께 사용하여 기능을 수행합니다. 이 클래스는 추상화된 인터페이스와 구현부 클래스를 연결하는 역할을 합니다.

다음은 Bridge Pattern을 구현한 코드입니다.

interface Shape {
    void draw();
}

class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Draw Circle");
    }
}

class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("Draw Square");
    }
}

abstract class Brush {
    protected Shape shape;

    public Brush(Shape shape) {
        this.shape = shape;
    }

    public abstract void draw();
}

class RedBrush extends Brush {
    public RedBrush(Shape shape) {
        super(shape);
    }

    @Override
    public void draw() {
        System.out.print("Draw Red ");
        shape.draw();
    }
}

class BlueBrush extends Brush {
    public BlueBrush(Shape shape) {
        super(shape);
    }

    @Override
    public void draw() {
        System.out.print("Draw Blue ");
        shape.draw();
    }
}

public class BridgePattern {
    public static void main(String[] args) {
        Shape circle = new Circle();
        Brush redBrush = new RedBrush(circle);
        Brush blueBrush = new BlueBrush(circle);

        redBrush.draw();
        blueBrush.draw();
    }
}

위 코드에서 Shape는 추상화된 인터페이스입니다. Circle과 Square은 Shape를 구현하는 클래스입니다. Brush는 추상화된 인터페이스를 사용하는 클라이언트 클래스입니다. RedBrush와 BlueBrush는 Brush를 구현하는 클래스입니다. 이 코드에서 Brush와 Shape는 서로 독립적으로 변경될 수 있으며, Brush를 추가하거나 Shape를 추가하더라도 영향을 받지 않습니다.

Bridge Pattern을 사용하면 추상화와 구현을 분리하여 유연하고 확장 가능한 코드를 작성할 수 있습니다. 이를 통해 시스템의 유지보수와 확장성을 향상시킬 수 있습니다. Bridge Pattern을 사용하여 객체지향 프로그래밍을 하면 더 나은 코드를 작성할 수 있습니다.

Reference : Bridge Pattern: 추상화와 구현의 분리를 통해 유연하고 확장 가능한 코드 작성하기

+ Recent posts