브릿지 패턴으로 확장성과 유연성 높이기: 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.