정의 [위키피디아] :
어댑터 패턴(Adapter pattern)은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로,
호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다.
정의 [쉽게]
집에서 사용하는 220V 전자 제품을 110V 로 사용하기 위해서는 어댑터가 필요하다.
어떤 제품이든 어댑터만 있으면 동일하게 변환이 가능하다.
이런 어댑터의 기능을 갖게하는 개발 패턴을 어댑터 패턴이라고 한다.
아직 이해가 안된다면, 소스로 이해하자.
어댑터 패턴을 사용하기 이전
ServiceA.java
public class ServiceA {
public void runServiceA() {
System.out.println("ServiceA");
}
}
ServiceB.java
public class ServiceB {
public void runServiceB() {
System.out.println("ServiceB");
}
}
ClientWithNoAdapter.java
/*
* 어댑터 패턴을 사용하지 않음.
*/
public class ClientWithNoAdapter {
public static void main(String[] args) {
// TODO Auto-generated method stub
ServiceA sa1 = new ServiceA();
ServiceB sb1 = new ServiceB();
sa1.runServiceA();
sb1.runServiceB();
}
}
위 프로그램에서
ServiceA, ServiceB 클래스는 유사한 기능을 한다고 했을때
runServiceA, runServiceB 는 공통화 시켜 사용 가능하다.
ServiceA 어댑터 패턴 사용하기 , AdapterServicA.java
public class AdapterServicA {
ServiceA sa1 = new ServiceA();
// 메서드 명을 동일하게 생성한다.
void runService() {
sa1.runServiceA();
}
}
ServiceB 어댑터 패턴 사용하기 , AdapterServicB.java
public class AdapterServicB {
ServiceB sb1 = new ServiceB();
// 메서드 명을 동일하게 생성한다.
void runService() {
sb1.runServiceB();
}
}
ClientWithAdapter.java
/*
* 어댑터 패턴을 사용하여, 객체의 메소드를 동일하게 한다.
* 향후 해당 소스의 runService는 interface 를 이용하여, 어댑터 기능을 사용할 수 있다.
*/
public class ClientWithAdapter {
public static void main(String[] args) {
AdapterServicA asa1 = new AdapterServicA();
AdapterServicB asb1 = new AdapterServicB();
asa1.runService();
asb1.runService();
}
}
참고서적 : 스프링 입문을 위하 자바 객체지향의 원리와 이해
'객체지향 (OOP) > 디자인 패턴' 카테고리의 다른 글
팩토리 메서드 패턴(Factory method pattern) (0) | 2021.06.30 |
---|---|
템플릿 메소드 패턴(template method pattern) (0) | 2021.06.29 |
싱글톤 패턴(Singleton Pattern) (0) | 2021.06.28 |
데코레이터 패턴 (Decorator Pattern) (0) | 2021.06.28 |
프록시 패턴(proxy pattern) (0) | 2021.06.22 |