Post

브릿지 패턴으로 확장성과 유연성 높이기: Java 코드로 이해하기

브릿지 패턴이 뭘까 ?


phone class 에 Galaxy 와 Iphone class 가 있다고 해보자! 나는 Galaxy 에서 하위 클래스로 red 와 blue 를 가지도록 할 예정이다. 그리고 Iphone 도 하위 클래스로 red와 blue를 가지도록 할 예정이다. 제대로된 패터을 사용하지 않으면 phone 이 늘어나거나 color 가 늘어남에 따라 대응해야하는 class 가 무지막지하게 늘어날것이다! 이럴때 사용 할 수 있는 패턴이 브릿지 패턴이다!

코드를 확인해보자!


우선 Color class 부터 정의를 해준다. 이부분이 기능을 담당하는 클래스 이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public interface Color {
    String paint();
}
public class Red implements Color {
	@Override
	public String paint() {        
		return "red";  
	}
}

public class Blue implements Color {
	@Override
	public String paint() {
		return "blue";
	}
}

그리고 구현을 답당하는 클래스 phone 은 아래와 같이 작성 할 수 있다!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public abstract class Phone {
    protected Color color;
    protected Phone(Color color) {
        this.color = color;
    }
    public abstract String phoneColor(); 
}

public class Galaxy extends Phone{

    Galaxy (Color color) {
		super(color);
    }
    
    public String phoneColor() {
	    return "galaxy" + color.paint();
    }
}

public class Iphone extends Phone{

    Iphone (Color color) {
		super(color);
    }
    
    public String phoneColor() {
	    return "iphone" + color.paint();
    }
}

Phone 추상 클래스를 color 와 연결을 지어서 위와 같이 작성 할 수 있다!

어떤 장점이 있을까 ??


이렇게 되면 Phone 과 Color 는 따로 아예 별개처럼 개발이 진행 될수있다! 그리고 color 는 color 대로 마음대로 확장이 가능하고 phone 도 마찬가지다!

This post is licensed under CC BY 4.0 by the author.

© 병욱. Some rights reserved.