디자인 패턴 - Bridge Pattern

Table of Contents

출처 : https://www.tutorialspoint.com/design_pattern/bridge_pattern.htm

Bridge는 추상화를 구현에서 분리하여 두 가지가 독립적으로 변할 수 있도록 분리해야 할 때 사용됩니다. 이러한 유형의 디자인 패턴은 이 패턴이 구현 클래스와 추상 클래스 사이에 브리지 구조를 제공하여 분리하기 때문에 구조적 패턴에 속합니다.

이 패턴은 구체적인 클래스의 기능을 인터페이스 구현자 클래스와 독립적으로 만드는 브리지 역할을 하는 인터페이스를 포함합니다. 두 유형의 클래스는 서로 영향을 주지 않고 구조적으로 변경할 수 있습니다.

우리는 동일한 추상 클래스 메서드를 사용하지만 다른 브리지 구현 클래스를 사용하여 다른 색상으로 원을 그릴 수 있는 다음 예제를 통해 브리지 패턴의 사용을 보여주고 있습니다.

Implementation

브리지 구현자 역할을 하는 DrawAPI 인터페이스와 DrawAPI 인터페이스를 구현하는 RedCircle, GreenCircle 구체적인 클래스가 있습니다. Shape는 추상 클래스이며 DrawAPI의 개체를 사용합니다. BridgePatternDemo, 데모 클래스는 Shape 클래스를 사용하여 다른 색상의 원을 그립니다.

Bridge Pattern UML Diagram

Step 1

Create bridge implementer interface.

DrawAPI.java

1public interface DrawAPI {
2   public void drawCircle(int radius, int x, int y);
3}

Step 2

DrawAPI 인터페이스를 구현하는 구체적인 브리지 구현자 클래스를 만듭니다.

RedCircle.java

1public class RedCircle implements DrawAPI {
2   @Override
3   public void drawCircle(int radius, int x, int y) {
4      System.out.println("Drawing Circle[ color: red, radius: " + radius + ", x: " + x + ", " + y + "]");
5   }
6}

GreenCircle.java

1public class GreenCircle implements DrawAPI {
2   @Override
3   public void drawCircle(int radius, int x, int y) {
4      System.out.println("Drawing Circle[ color: green, radius: " + radius + ", x: " + x + ", " + y + "]");
5   }
6}

Step 3

DrawAPI 인터페이스를 사용하여 추상 클래스 Shape를 만듭니다.

Shape.java

1public abstract class Shape {
2   protected DrawAPI drawAPI;
3
4   protected Shape(DrawAPI drawAPI){
5      this.drawAPI = drawAPI;
6   }
7   public abstract void draw();
8}

Step 4

Shape 인터페이스를 구현하는 구체적인 클래스를 만듭니다.

Circle.java

 1public class Circle extends Shape {
 2   private int x, y, radius;
 3
 4   public Circle(int x, int y, int radius, DrawAPI drawAPI) {
 5      super(drawAPI);
 6      this.x = x;
 7      this.y = y;
 8      this.radius = radius;
 9   }
10
11   public void draw() {
12      drawAPI.drawCircle(radius,x,y);
13   }
14}

Step 5

ShapeDrawAPI 클래스를 사용하여 다양한 색상의 원을 그립니다.

BridgePatternDemo.java

1public class BridgePatternDemo {
2   public static void main(String[] args) {
3      Shape redCircle = new Circle(100,100, 10, new RedCircle());
4      Shape greenCircle = new Circle(100,100, 10, new GreenCircle());
5
6      redCircle.draw();
7      greenCircle.draw();
8   }
9}

Step 6

출력을 확인합니다.

1Drawing Circle[ color: red, radius: 10, x: 100, 100]
2Drawing Circle[  color: green, radius: 10, x: 100, 100]

이 시리즈의 게시물

댓글