ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA]객체 지향 디자인 패턴 - Adapter Pattern(어댑터 패턴)
    프로그래밍/Java 2022. 3. 23. 15:42
    반응형

    Adapter Pattern이란?

    • Adapter란 다른 나라에서는 220v사용하는 제품을 우리나라로 들고 왔을 때 우리나라는 110v제품을 사용한다면 adapter라는 것을 이용하여 v 전압수를 맞추어 충전이나 사용가능하도록 해주는 역할을 말한다.
    • 객체지향 언어에서 adapter란 객체간의 같은 기능을 하지만, 객체의 선언부나 타입 행동들이 맞지 않을 때 객체간의 간격을 맞추어서 사용할 수 있도록 해주는 역할을 한다

     

    Adapter Pattern Structure(어댑터 패턴 구조)

    • 220v 전자제품 AirConditioner, Cleaner가 있고, 110v HairDryer가 있다고 해보자 
    • 그런데 제품을 무조건 110v로 맞추어 사용해야한다고 하면 220v를 adapter를 이용하여 변경한 후에 사용이 가능 할 것이다.
    • 그래서 110vAdapter를 이용하여 110v를 맞추준후 호출 하는 구조를 갖는다 

     

    Adapter Patter Example

    • 위의 예제로 구현해보도록 하겠다.

     

    먼저 220v 인터페이스 및 AirConditioner, Cleaner 클래스

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

    110v 인터페이스 및 HairDryer 클래스

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

    110v Adapter

    //다형성을 맞춰주어야 하므로  Electronic110v를 implements받는다.
    public class ElectronicAdapter implements Electronic110v{
    
    	//Electronic220v를 객체로 가지고 있고 
    	private Electronic220v electronic220v;
    	
    	//맨처음 생성자에 Electronic220v를 넣어 가지고 있는다 
    	public ElectronicAdapter(Electronic220v electronic220v) {
    		this.electronic220v = electronic220v;
    	}
    	
    	//Electronic110v를 실행하면 같은 기능을 하는 
    	//connect가 실행되도록하여 PowerOn로 구현된 것처럼 맞춰준다.
    	@Override
    	public void powerOn() {
    		electronic220v.connect();
    	}
    
    }

    Main에서 AirConditioner, Cleaner,  HairDryer 생성

    public class AdapterTest {
    	public static void main(String[] args) {
    		
    		Electronic110v hairDryer = new HairDryer();
    		Electronic110v cleaner = new ElectronicAdapter(new Cleaner());
    		Electronic110v airConditioner = new ElectronicAdapter(new AirConditioner());
            //출력
            //헤어 드라이기 110v
            //청소기 220v on
            //에어컨 220v on
    	}
    }

     

     

    Adapter Pattern을 사용하는 이유

    • adapter pattern을 같은 기능을 하는 함수가 있으나 표현 방식이나 호출부, 생성자의 내용이 다를 때 맞춰주는 용도로 사용한다고 말했는데, 일을 하다보면 퇴사자가 기존의 코드를 만들어 놓았는데 같은 기능으로 사용하고 싶을 때 나 협업 중 같은 기능을 만들어도 사람의 따라 메소드 형식이나 표현부 파라미터 내용을 다르게 작성할 때가 있다. 이럴때 이 내용을 맞춰주는 
    • 또한 회사 내부에서 시간이 없어 다른 업체에 구현해 달라고 맡기거나 프로젝트에서 다른 회사와 협업을 할 때 같은 기능인데 구현부가 다른 경우 사용한다. 
    반응형

    댓글

Designed by Tistory.