728x90
반응형
Bridge Pattern
추상적인 것과 구체적인 것을 분리하여 연결하는 패턴
하나의 계층 구조일 때 보다 각기 나누었을 때 독립적인 계층 구조로 발전 시킬 수 있다.
Champion
public interface Champion {
void move();
void skillQ();
void skillW();
void skillE();
void skillR();
}
DefaultChamPion
public class DefaultChampion implements Champion {
private Skin skin;
private String name;
public DefaultChampion(Skin skin, String name) {
this.skin = skin;
this.name = name;
}
@Override
public void move() {
System.out.printf("%s %s move\n", skin.getName(), this.name);
}
@Override
public void skillQ() {
System.out.printf("%s %s Q\n", skin.getName(), this.name);
}
@Override
public void skillW() {
System.out.printf("%s %s W\n", skin.getName(), this.name);
}
@Override
public void skillE() {
System.out.printf("%s %s E\n", skin.getName(), this.name);
}
@Override
public void skillR() {
System.out.printf("%s %s R\n", skin.getName(), this.name);
}
}
아리, 아칼리(챔피언 후보)
public class 아리 extends DefaultChampion {
public 아리(Skin skin) {
super(skin, "아리");
}
}
public class 아칼리 extends DefaultChampion{
public 아칼리(Skin skin) {
super(skin, "아칼리");
}
}
Skin
public interface Skin {
String getName();
}
KDA, PoolParty
public class PoolParty implements Skin {
@Override
public String getName() {
return "PoolParty";
}
}
public class KDA implements Skin{
@Override
public String getName() {
return "KDA";
}
}
APP
public abstract class App implements Champion {
public static void main(String[] args) {
Champion kda아리 = new 아리(new KDA());
kda아리.skillQ();
kda아리.skillW();
Champion poolParty아리 = new 아리(new PoolParty());
poolParty아리.skillR();
poolParty아리.skillW();
}
}
=============================================================
> Task :App.main()
KDA 아리 Q
KDA 아리 W
PoolParty 아리 R
PoolParty 아리 W
[ 패턴 복습]
장점 | 단점 |
- 추상적인 코드를 구체적인 코드 변경 없이도 독립적으로 확장 가능 - 추상적인 코드와 구체적인 코드를 분리할 수 있다. |
- 계층 구조가 늘어나 복잡도 증가 |
[ 실무에서 쓰이는 경우 ]
- 자바
- JDBC API, DriverManger와 Driver
- SLF4J, 로깅 퍼사드와 로거
- 스프링
- Portable Service Abstrction
728x90
반응형
'Design Patterns > 구조(Structural)' 카테고리의 다른 글
[Flyweight]플라이웨이트패턴 (0) | 2022.10.18 |
---|---|
[Facade]퍼사드패턴 (0) | 2022.10.18 |
[Decorator]데코레이터패턴 (0) | 2022.08.01 |
[Composite]컴포짓패턴 (0) | 2022.08.01 |
[Adaptor]어댑터패턴 (0) | 2022.05.31 |