adapter 패턴 예제

다행히 영국전기 소켓은 어댑터를 사용하여 독일플러그 커넥터와 함께 사용할 수 있습니다. 이것은 영국플러그 커넥터에 독일 플러그 커넥터를 래핑하여 보관할 수 있습니다. (vii) 이러한 방식으로 어댑터 및 공급자를 사용하면 클래스 계층 구조를 변경할 필요 없이 ClassB 및 ClassC에서 ClassA에 대한 여러 “뷰”를 ClassA로 사용할 수 있습니다. 일반적으로 기존 개체 계층 구조에 다시 장착할 수 있는 개체 간에 임의의 데이터 흐름에 대 한 메커니즘을 허용 합니다. 어댑터 패턴은 클래스의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 변환합니다. 어댑터를 사용하면 호환되지 않는 인터페이스로 인해 클래스가 함께 작동할 수 있습니다. 어댑터는 개체 중 하나를 래핑하여 뒤에서 일어나는 변환의 복잡성을 숨깁니다. 래핑된 개체는 어댑터를 인식하지 못합니다. 예를 들어 모든 데이터를 피트 및 마일과 같은 제국 단위로 변환하는 어댑터를 사용하여 미터 및 킬로미터로 작동하는 객체를 래핑할 수 있습니다. 이 문서에서는 Java의 어댑터 디자인 패턴을 살펴보는 것이 있습니다. 클라이언트 코드는 클라이언트 인터페이스를 통해 어댑터와 함께 작동하는 한 구체적인 어댑터 클래스에 결합되지 않습니다.

따라서 기존 클라이언트 코드를 손상시키지 않고 프로그램에 새로운 유형의 어댑터를 도입할 수 있습니다. 이 기능은 서비스 클래스의 인터페이스가 변경되거나 대체될 때 유용할 수 있습니다. 아니요. 실제로 이 예제에서는 이 코드를 바로 사용할 수 있는 코드를 사용할 수 있는 어댑터만 있으면 됩니다. 이제 우리는 어댑터 인터페이스Movable을 만들 수 있습니다동일한 이동 클래스를 기반으로합니다 적응. 다른 시나리오에서 다른 결과를 생성하기 위해 약간 수정될 수 있습니다. 이 구현에서는 상속을 사용합니다: 어댑터는 두 개체에서 동시에 인터페이스를 상속합니다. 이 방법은 C++와 같은 여러 상속을 지원하는 프로그래밍 언어로만 구현할 수 있습니다. 어댑터 패턴을 사용하면 호환되지 않는 클래스가 한 클래스의 인터페이스를 클라이언트에서 예상하는 인터페이스로 변환하여 함께 작업할 수 있습니다.

소켓 렌치는 어댑터의 예를 제공합니다. 드라이브 의 크기가 동일한 경우 소켓이 래칫에 부착됩니다. 미국의 일반적인 드라이브 크기는 1/2″와 1/4″입니다. 어댑터를 사용하지 않는 한 1/2″ 드라이브 래칫은 1/4″ 드라이브 소켓에 맞지 않습니다. 1/2″ ~ 1/4″ 어댑터는 1/2″ 드라이브 래칫에 맞게 1/2″ 여성 연결, 1/4″ 드라이브 소켓에 맞게 1/4″ 남성 연결. (iii) 어댑터를 런타임시 조회할 수 있도록 전역 레지스트리에 어댑터를 등록합니다. 어댑터는 클라이언트의 인터페이스와 호환되도록 기존 클래스를 새 인터페이스로 래핑합니다. 독일 사이에이 어댑터를 사용하여플러그 커넥터는 이제 영국전기 소켓을 사용할 수 있습니다. 이 방법에서는 Java 상속을 사용하고 소스 클래스를 확장합니다. 따라서 이 방법을 사용하면 아래와 같이 삼각형 및 Rhombus 클래스에 대해 별도의 어댑터를 만들어야 합니다.