Adapter Pattern
클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 변환시킨다. 서로 일치하지 않는 인터페이스를 갖는 클래스들은 함께 동작시킨다. Motivation 구식 라이브러리나 외부 라이브러리와 새로운 시스템이 호환되지 않는 문제가 발생할 수 있다. 예를 들어, 어떤 API는 기존 시스템에서 사용하는 인터페이스와 다르게 설계되어, 이를 그대로 사용이 불가능할 수 있다. 어댑터 패턴을 사용해 호환성을 맞춰줄 수 있다. Applicability 기존 클래스를 사용하고 싶은데 인터페이스가 맞지 않을 때 아직 예측하지 못한 클래스나 실제 관련되지 않는 클래스들이 기존 클래스를 재사용하고자 하지만, 이미 정의된 재사용 가능한 클래스가 지금 요청하는 인터페이스를 정의하고 있지 않을 때, 즉 이미 만든 것을 재사용하고자 하나 이 재사용 가능한 라이브러리를 수정할 수 없을 때 (Object Adapter만 해당) 이미 존재하는 여러 개의 서브클래스를 사용해야 하는데, 이 서브클래스들의 상속을 통해 이들 인터페이스를 다 개조한다는 것이 현실성이 없을 때, Object Adapter를 사용해 부모 클래스의 인터페이스를 변형하는 것이 더 바람직함 Structure Class Adapter Class Adapter는 다중 상속을 활용해 한 인터페이스를 다른 인터페이스로 적응시킨다....