728x90
브릿지패턴이란?
Bridge(=다리).. 서로 떨어져 있는 두 장소를 이어주는 역할
이것이 Bridge 패턴의 핵심!!
구현과 기능에 대해 두개의 별도 클래스로 구현한다.
😊코드로 알아봅시다!
<구현>
Noodle -> 추상클래스
Ramen -> Noodle 을 상속받는 클래스
Pasta -> Noodle 을 상속받는 클래스 (밑에 코드에 구현하진 않았음)
....등등 구현객체들..이 있겠죠..
<기능>
NoodleTypeHandler -> 인터페이스
NoodleTypeIsRamen -> 라면 기능 구현클래스
NoodleTypeisPasta -> 파스타 기능 구현클래스 (코드에 구현하진 않았음)
.....등등 기능객체들....이 있겠죠
Noodle.java
package study.BridgePattern.code1;
import lombok.extern.slf4j.Slf4j;
@Slf4j
abstract public class Noodle {
private NoodleTypeHandler noodleType;
public Noodle(NoodleTypeHandler noodleType){
this.noodleType = noodleType;
}
abstract public void typeOfNoodle();
public void putWater(){
noodleType.putNoodle();
}
public void putNoodle(){
noodleType.putNoodle();
}
public void putSource(){
noodleType.putSource();
}
public void boil(){
noodleType.boil();
}
}
Ramen.java
package study.BridgePattern.code1;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Ramen extends Noodle{
public Ramen(NoodleTypeHandler noodleType) {
super(noodleType);
}
@Override
public void typeOfNoodle() {
log.info("면 종류는 라면입니다.");
super.putWater();
super.putNoodle();
super.putSource();
super.boil();
}
}
NoodleTypeHandler.java
package study.BridgePattern.code1;
public interface NoodleTypeHandler {
void putWater();
void putNoodle();
void putSource();
void boil();
}
NoodleTypeIsRamen.java
package study.BridgePattern.code1;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class NoodleTypeIsRamen implements NoodleTypeHandler{
@Override
public void putWater() {
log.info("라면 물을 넣는다");
}
@Override
public void putNoodle() {
log.info("라면 면을 넣는다");
}
@Override
public void putSource() {
log.info("라면 스프를 넣는다");
}
@Override
public void boil() {
log.info("3분간 팔팔 끓인다");
}
}
BridgePatternTest.java
package study.BridgePattern;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import study.BridgePattern.code0.Animal;
import study.BridgePattern.code0.Bird;
import study.BridgePattern.code0.HuntingMethod1;
import study.BridgePattern.code1.Noodle;
import study.BridgePattern.code1.NoodleTypeIsRamen;
import study.BridgePattern.code1.Ramen;
@Slf4j
public class BridgePatternTest {
@Test
void code1test(){
Noodle ramen = new Ramen(new NoodleTypeIsRamen());
ramen.typeOfNoodle();
}
}
결과값
면 종류는 라면입니다.
라면 면을 넣는다
라면 면을 넣는다
라면 스프를 넣는다
3분간 팔팔 끓인다
'DESIGN PATTERN' 카테고리의 다른 글
[디자인패턴] 어댑터 패턴(Adapter Pattern)이란? - 개발자 배찌 (0) | 2022.04.11 |
---|---|
[디자인패턴] 책임 연쇄 패턴 (Chai- of-responsibility Pattern) - 개발자 배찌 (0) | 2022.04.11 |
[디자인패턴] 프록시패턴(proxy Pattern)과 데코레이터패턴(decorator Pattern) - 개발자 배찌 (0) | 2022.04.07 |
[디자인패턴] 어댑터 패턴 (Adaptor Pattern) 예시 - 개발자 배찌 (0) | 2022.02.03 |
[디자인패턴] 스트래티지 패턴(Strategy Pattern)이란? - 개발자 배찌 (0) | 2022.02.03 |