-
[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을 같은 기능을 하는 함수가 있으나 표현 방식이나 호출부, 생성자의 내용이 다를 때 맞춰주는 용도로 사용한다고 말했는데, 일을 하다보면 퇴사자가 기존의 코드를 만들어 놓았는데 같은 기능으로 사용하고 싶을 때 나 협업 중 같은 기능을 만들어도 사람의 따라 메소드 형식이나 표현부 파라미터 내용을 다르게 작성할 때가 있다. 이럴때 이 내용을 맞춰주는
- 또한 회사 내부에서 시간이 없어 다른 업체에 구현해 달라고 맡기거나 프로젝트에서 다른 회사와 협업을 할 때 같은 기능인데 구현부가 다른 경우 사용한다.
반응형'프로그래밍 > Java' 카테고리의 다른 글
[JAVA]객체 지향 디자인 패턴 - Template Method Pattern(탬플릿 메소드 패턴) (0) 2022.03.23 [JAVA]객체 지향 디자인 패턴 - Proxy Pattern(대리인 패턴) (0) 2022.03.23 [JAVA]객체 지향 디자인 패턴 - State Pattern(상태 패턴) (0) 2022.03.22 [JAVA]객체 지향 디자인 패턴 - Strategy Pattern(전략 패턴) (0) 2022.03.22 [JAVA]객체 지향 디자인 패턴 - Singleton Pattern (0) 2022.03.22