용어정리-[#디자인 패턴] 1.Adapter Pattern
2018. 6. 1. 01:07ㆍ용어정리/#디자인패턴
[ Adapter Pattren ]
어댑터 패턴
2018 - 06 - 01
어댑터를 번역하면 변환기(converter) 라고 할 수 있다.
변환기의 역할은 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것이다.
데이터베이스 관련 프로그램을 작성해 봤다면
다양한 데이터베이스 시스템을 공통의 인터페이스인
ODBC나 JDBC를 이용해 조작할 수 있다는 사실을 알고 있을 것이다.
바로 ODBC나 JDBC가 어댑터 패턴을 이용해 다양한 데이터베이스 시스템을
단일한 인터페이스로 조작할 수 있게 해주기 때문이다.
다음은 어댑터 패턴이 적용되지 않은 코드이다.
ServiceA.java
1 2 3 4 5 6 7 | package adapterPattern; public class serciceA { void runServiceA() { System.out.println("ServiceA"); } } | cs |
ServiceB.java
1 2 3 4 5 6 7 | package adapterPattern; public class ServiceB{ void runServiceB(){ System.out.println("ServiceB"); } } | cs |
ClientWithNoAdapter.java
1 2 3 4 5 6 7 8 9 10 11 | package adapterPattern; public class ClientWithNoAdapter { public static void main(String[] args){ ServiceA sa1 = new ServiceA(); ServiceB sb1 = new ServiceB(); sa1.runServiceA(); sb1.runServiceB(); } } | cs |
main() 메서드를 살펴보면
sa1 참조 변수와 sb1 참조 변수를 통해 호출하는 각 메서드가 비슷한 일을 하지만메서드명이
다른 것을 8번째와 9번째 라인에서 볼 수 있다.
ServiceA를 위한 변환기 AdapterServiceA.java
1 2 3 4 5 6 7 8 9 | package adapterPattern; public class AdapterServiceA { ServiceA sa1 = new ServiceA(); void runService(){ sa1.runService(); } } | cs |
ServiceB를 위한 변환기 AdapterServiceB.java
1 2 3 4 5 6 7 8 9 | package adapterPattern; public class AdapterServiceB { ServiceB sb1 = new ServiceB(); void runService(){ sb1.runService(); } } | cs |
예제들을 보면 기존의 ServiceA와 ServiceB의 메서드를 Service()라고 하는 같은 이름의 메서드로 호출해서 사용할 수 있게 해주는 변환기이다. 이제 ClientWithAdapter라는 클래스를 추가하고 main() 메서드에서 이 변환기들을 사용해 보자
어댑터 패턴을 사용하는 ClientWithAdapter.java
1 2 3 4 5 6 7 8 9 10 11 | package adapterPattern; public class ClientWithAdapter { public static void main(String[] args){ AdapterServiceA asa1 = new AdapterServiceA(); AdapterServiceB asb1 = new AdapterServiceB(); asa1.runService(); asb1.runService(); } } | cs |
클라이언트(ClientWithAdapter)가 변환기를 이용해 runService()라는 동일한 메서드명으로
두 객체의 메서드를 호출하는 것을 볼 수 있다.
어댑터 패턴은 합성. 즉 객체를 속성으로 만들어서 참조하는 디자인 패턴으로,
한 문장으로 정리하면 다음과 같다.
"호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록중간에 변환기를 통해 호출하는 패턴"
출처
스프링 입문을 위한 자바 객체 지향의 원리와 이해
김종민 지음
'용어정리 > #디자인패턴' 카테고리의 다른 글
용어정리-[#디자인패턴] 5.Template Method Pattern (0) | 2018.06.01 |
---|---|
용어정리-[#디자인패턴] 4.Singleton Pattern (0) | 2018.06.01 |
용어정리-[#디자인패턴] 3.Decorator Pattern (0) | 2018.06.01 |
용어정리-[#디자인패턴] 2.Proxy Pattern (0) | 2018.06.01 |