에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다
1. 브리지 패턴
- 두 계층간의 다리를 만들어 추상 계층과 구현 계층을 분리
- 구현과 더불어 추상화 부분까지 변경해야 할 경우 사용되는 패턴
- 추상화 부분과 구현 부분이 독립적
장점
- 추가로 인한 조합을 모두 만들지 않아도 됨
- 변경으로 인한 기존 코드의 추가 및 수정이 적음
RemoteControl
abstract class RemoteControl {
protected TV tv; // Bridge to TV
public RemoteControl(TV tv) {
this.tv = tv;
}
public abstract void turnOn();
public abstract void turnOff();
public abstract void setChannel(int channel);
}
class BasicRemoteControl extends RemoteControl {
public BasicRemoteControl(TV tv) {
super(tv);
}
@Override
public void turnOn() {
tv.on();
}
@Override
public void turnOff() {
tv.off();
}
@Override
public void setChannel(int channel) {
tv.changeChannel(channel);
}
}
class SmartRemoteControl extends RemoteControl {
public SmartRemoteControl(TV tv) {
super(tv);
}
@Override
public void turnOn() {
System.out.println("Smart Remote: Turning TV ON.");
tv.on();
}
@Override
public void turnOff() {
System.out.println("Smart Remote: Turning TV OFF.");
tv.off();
}
@Override
public void setChannel(int channel) {
System.out.println("Smart Remote: Setting channel via voice command.");
tv.changeChannel(channel);
}
}
TV
interface TV {
void on();
void off();
void changeChannel(int channel);
}
class SamsungTV implements TV {
@Override
public void on() {
System.out.println("Samsung TV is ON.");
}
@Override
public void off() {
System.out.println("Samsung TV is OFF.");
}
@Override
public void changeChannel(int channel) {
System.out.println("Samsung TV: Changing to channel " + channel);
}
}
class LGTV implements TV {
@Override
public void on() {
System.out.println("LG TV is ON.");
}
@Override
public void off() {
System.out.println("LG TV is OFF.");
}
@Override
public void changeChannel(int channel) {
System.out.println("LG TV: Changing to channel " + channel);
}
}
'Java > Design Pattern' 카테고리의 다른 글
[헤드퍼스트 디자인 패턴] 12-3. 책임 연쇄 패턴 (0) | 2024.12.19 |
---|---|
[헤드퍼스트 디자인 패턴] 12-2. 빌더 패턴 (0) | 2024.12.19 |
[헤드퍼스트 디자인 패턴] 11. 프록시 패턴 (0) | 2024.12.18 |
[헤드퍼스트 디자인 패턴] 10. 상태 패턴 (0) | 2024.12.18 |
[헤드퍼스트 디자인 패턴] 9-2. 컴포지트 패턴 (0) | 2024.12.18 |