728x90
반응형
Bridge Pattern이란?
구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게하는 패턴이다.
클래스를 다른 인터페이스로 변형시키는 면에서 adapter pattern과 유사함.
상속을 이용한 패턴으로 확장 설계에 용이하다.
요청하는 부분의 코드 수정 없이 실제 구현부분의 수정을 가능하게 만든다.
예제
TV interface
1 2 3 4 5 6 7 | public interface ITV { public void on(); public void off(); public void switchChannel(int channel); } | cs |
ITV interface를 implements한 클래스 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class SamsungTV implements ITV { public void on() { System.out.println("Samsung TV is turned on"); } public void off() { System.out.println("Samsung TV is turned off"); } public void switchChannel(int channel) { System.out.println("Samsung: channel - " + channel); } } | cs |
ITV interface를 implements한 클래스 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class LGTV implements ITV { public void on() { System.out.println("LG TV is turned on"); } public void off() { System.out.println("LG TV is turned off"); } public void switchChannel(int channel) { System.out.println("LG: channel - " + channel); } } | cs |
ITV를 이용한 추상클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public abstract class AbstractRemoteControl { private ITV tv; public AbstractRemoteControl(ITV tv) { this.tv = tv; } public void turnOn() { tv.on(); } public void turnOff() { tv.off(); } public void setChannel(int channel) { tv.switchChannel(channel); } } | cs |
추상클래스를 이용해 구현한 클래스
1 2 3 4 5 6 7 8 9 10 11 | public class LogitechRemoteControl extends AbstractRemoteControl { public LogitechRemoteControl(ITV tv) { super(tv); } public void setChannelKeyboard(int channel) { setChannel(channel); System.out.println("Logitect use keyword to set channel"); } } | cs |
메인클래스
1 2 3 4 5 6 7 8 | public class BridgeMain { public static void main(String args[]) { ITV tv = new LGTV(); LogitechRemoteControl lrc = new LogitechRemoteControl(tv); lrc.setChannelKeyboard(100); } } | cs |
예제는 reference 블로그에 나와있는 것을 그대도 가져왔습니다.
Reference
http://palpit.tistory.com/197
728x90
반응형
'프로그래밍 > 디자인 패턴(프로그래밍)' 카테고리의 다른 글
[Design Pattern]Composite Pattern이란? (0) | 2019.01.18 |
---|---|
[Design Pattern]Adapter Pattern이란? (0) | 2019.01.18 |
[Design Pattern]Prototype Pattern이란? (0) | 2019.01.17 |
[Design Pattern]Builder Pattern이란? (0) | 2019.01.17 |
[Design Pattern]Abstract Factory Pattern이란? (0) | 2019.01.17 |
댓글