디자인패턴) Adapter pattern with Java
- 클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 적응 시킵니다.
- 서로 일치하지않은 인터페이스를 갖는 클래스들을 함께 동작시키고, 기존 기능을 재사용할 수 있다는 장점이 있습니다.
- Wrapper라고도 합니다.
- 두가지 방법이 존재합니다.
public interface Car {
public void getDoor();
public void getTier();
}
public class SportsCar implements Car{
@Override
public void getDoor() {
System.out.println("I have 2 door");
}
@Override
public void getTier() {
System.out.println("I have 4 tier");
}
}
public interface Motocycle {
public void getManufacturer();
public void getTier();
}
public class BmwMotocycle implements Motocycle{
@Override
public void getManufacturer() {
System.out.println("BMW");
}
@Override
public void getTier() {
System.out.println("I have 2 tier");
}
}
public class MotocycleAdapter implements Car {
private Motocycle motocycle;
public MotocycleAdapter(Motocycle motocycle){
this.motocycle = motocycle;
}
@Override
public void getDoor() {
System.out.println("I don't have doors");
}
@Override
public void getTier() {
motocycle.getTier();
}
}
public class main {
public static void main(String[] args) throws IOException{
SportsCar sportsCar = new SportsCar();
Car motocycleAdapter = new MotocycleAdapter(new BmwMotocycle());
System.out.println("Car---");
sportsCar.getDoor();
sportsCar.getTier();
System.out.println("Adapter---");
motocycleAdapter.getDoor();
motocycleAdapter.getTier();
}
}
댓글
댓글 쓰기