안녕하세요 Limky입니다.
오늘은 디자인 패턴 중 어댑터 패턴(Adapter Pattern)에 대해서 알아보겠습니다.
Adatper 를 우리말로 바꿔보면 변환기 정도로 해석됩니다.
실생활에서 변환기를 우리는 참 많이 사용합니다.
예를 들어 핸드폰 충전기입니다. 핸드폰을 컨센트에다가 직접 접촉시켜 충전하지 않고
충전기라는 어댑터를 통해 핸드폰과 컨센트를 연결하여 핸드폰을 충전합니다.
그렇다면 왜 이런 Adapter를 쓸까요????
바로 기존에 이미 잘 구축되어 있는 것을 새로운 어떤 것이 사용 할 때 양쪽 간의 호환성을 유지해주기 위함입니다.
자바에서도 직접적으로 메서드를 호출하지 않고 중간에 어댑터를 거쳐서 메서드를 호출하도록 하는 패턴이 바로 어댑터 패턴(Adapter Pattern) 입니다. 아래는 Adapter 디자인 패턴 테이블입니다.
어댑터 패턴(Adapter Pattern)을 구현하는 방법은 2가지입니다.
- 클래스 방식
- 객체 방식
우선 클래스 방식부터 보면서 차근차근 알아봅시다.
기존 : Camera
어댑터 : AdapterCamera (필요한 인터페이스 : Connectable)
새로운 : Main
Camera.java
public class Camera {
void connectCamA() {
System.out.println("connectCamA");
}
void connectCamB() {
System.out.println("connectCamB");
}
}
Connectable.java
public interface Connectable {
public abstract void connectCamA();
public abstract void connectCamB();
}
AdapterCamera.java
public class AdapterCamera extends Camera implements Connectable{
@Override
public void connectCamA() {
// TODO Auto-generated method stub
connectCamA();
}
@Override
public void connectCamB() {
// TODO Auto-generated method stub
connectCamB();
}
}
public class Main {
public static void main(String[] args) {
Connectable connCam = new AdapterCameraByObject();
connCam.connectCamA();
connCam.connectCamB();
}
}
AdapterCameraByObject.java
public class AdapterCameraByObject implements Connectable{
Camera cam = new Camera();
@Override
public void connectCamA() {
cam.connectCamA();
}
@Override
public void connectCamB() {
cam.connectCamA();
}
}
오늘은 Adapter에 대해서 알아보았는데, 저는 예제를 간단하게 했지만, 더 괜찮은 예제가 있어 링크 드립니다. 구체적으로 변환하는 과정까지 코드에 있기 때문에 더욱 이해가 될 것입니다.
'프로그래밍 > Design_Pattern' 카테고리의 다른 글
[Design_Pattern] 템플릿 메서드 패턴(Template Method Pattern) (3) | 2017.08.27 |
---|---|
[Design_Pattern] 데코레이터 패턴(Decorator Pattern) (1) | 2017.08.25 |
[Design_Pattern] 프록시 패턴(Proxy Pattern) (4) | 2017.08.25 |
[Design_Pattern] Singleton(싱글톤)의 고도화 (2) | 2017.07.27 |
[Design_Pattern] 싱글톤 패턴(Sigleton Pattern) (0) | 2017.06.14 |
댓글