less than 1 minute read

  • 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용 할 수 있도록 한다. SOLID 중에서 개방패쇄 원칙(OCP)를 따른다.
  • 100 V를 220 V로 바꾸는 변환기를 생각하면 이해하기 쉽다.

    예제코드 (전압 변환 플러그 어댑터)

110V 인터페이스와 제품

public interface Electronic110V {
    void powerOn();
    
}
public class HairDryer implements Electronic110V {
    @Override
    public void powerOn(){
    	System.out.println("헤어 드라이어 110v on");
    }
    
}

220V 인터페이스와 제품

public interface Electronic220V {
    void connect();
    
}
public class AirConditioner implements Electronic220V {
    @Override
    public void powerOn(){
    	System.out.println("에어컨 220v on");
    }
    
}
public class VacuumCleaner implements Electronic220V {
    @Override
    public void powerOn(){
    	System.out.println("청소기 220v on");
    }
    
}

실행코드

public class Main {
   
    public static void main(String[] args){
    	//110v
    	HairDryer hairDryer = new HairDryer();
    	connect(hairDryer);
    	
    	//220V
    	VacuumCleaner cleaner = new VacuumCleaner();
    	//connect(cleaner);// adater없이는 오류
    	Electronic110V cleanerAdapter = new SocketAdapter(cleaner);
    	connect(cleanerAdapter);
    	
    	AirConditioner airConditioner = new AirConditioner();
    	Electronic110V airConditionerAdapter = new SocketAdapter(airConditionerAdapter);
    	connect(adapter);
    }
    
    // 콘세트 
    public static void connect(Electronic110V electronic110V){
    	electronic110V.powerOn();
    }
}

어댑터 구현

public class SocketAdapter implements Electronic110V {
	private Electronic220V electronic220V;
	
	public SocketAdapter(Electronic220V electronic220V){
		this.electronic220V = electronic220V;
	}
    @Override
    public void powerOn(){
    	electronic220V.connect();
    	System.out.println("220v on");
    }
    
}

Comments