Adapter - 구조패턴
마음의 지식/패턴 / 2010. 7. 22. 00:35
의도
클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 적응(변환)시킵니다.
서로 일치하지 않는 인터페이스를 갖는 클래스들을 함께 동작시킵니다.
다른 이름
래퍼(Wrapper)
동기
이미 존재하기는 하지만 현재 이를 사용하고자 하는 클래스와는 아무런 연관 없이 개발될 클래스이거나, 서로 일치하지 않는 인터페이스를 갖는 클래스들을 잘 통합하여 하나의 응용프로그램을 개발해야할 때.
활용성
기존 클래스를 사용하고 싶은데 인터페이스가 맞지 않을 때
아직 예측하지 못한 클래스나 실제 관련되지 않은 클래스들이 기존 클래스를 재사용하고자 하지만, 이미 정의된 재사용 가능한 클래스가 지금 요청하는 인터페이스를 꼭 정의하고 있지 않을 때. 다시 말해, 이미 만든 것을 재사용하고자 하나 이 재사용 가능한 라이브러리를 수정할 수 없을 때
[객체 적응자(object adapter)만 해당됨] 이미 존재하는 여러 개의 서브클래스를 사용해야 하는데, 이 서브클래스들의 상속을 통해서 이들의 인터페이스를 다 개조한다는 것이 현실성이 없을 때. 객체 적응자를 써서 부모 클래스의 인터페이스를 변형하는 것이 더 바람직함