추상적인 것과 구체적인 것을 분리하여 연결하는 패턴


before => 챔피언과 스킨을 붙여서 만듬. 클래스 수가 챔피언 수 X 스킨 수만큼 늘어남
public interface Champion extends Skin {
void move();
void skillQ();
...
}
public class KDA아리 implements Champion{
@Override
public void move(){
System.out.println("KDA 아리 move");
}
@Override
public void skillQ(){
System.out.println("KDA 아리 Q");
}
...
}
public class PoolParty아칼리 implements Champion{
...
}
after => 브릿지 패턴으로 둘을 분리하여 효율적이게 됨.
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);
}
...
}
public interface Skin {
String getName();
}
public class KDA implements Skin{
@Override
public String getName() {
return "KDA";
}
}
public class 아리 extends DefaultChampion {
public 아리(Skin skin) {
super(skin, "아리");
}
}
