"안녕하세요, Amigo! 오늘은 정확히 « 어댑터 » 가 무엇인지 알려드리겠습니다 . 이 주제에 대해 학습한 후 입력/출력 스트림을 훨씬 더 잘 이해하게 되기를 바랍니다."

귀하의 프로그램이 다른 프로그래머/회사에서 작성한 두 가지 프레임워크를 사용한다고 상상해 보십시오. 두 프레임워크 모두 매우 훌륭하며 추상화, 다형성, 캡슐화와 같은 OOP 원칙을 사용합니다. 프로그램이 수행해야 하는 작업을 거의 완벽하게 다룹니다. 간단한 작업이 남았습니다. 한 프레임워크에서 생성된 개체를 다른 프레임워크로 전달해야 합니다. 그러나 두 프레임워크는 완전히 다르며 "서로에 대해 알지 못합니다". 즉, 공통 클래스가 없습니다. 어떻게든 한 프레임워크의 개체를 다른 프레임워크의 개체로 변환해야 합니다.
이 작업은 « 어댑터 » 기술(디자인 패턴)을 적용하여 아름답게 해결할 수 있습니다 .
자바 코드 | 설명 |
---|---|
|
이는 어댑터 설계 패턴을 반영합니다. 기본 아이디어는 MyClass 클래스가 한 인터페이스를 다른 인터페이스로 변환(적응)한다는 것입니다. |
"좀 더 구체적인 예를 들어주실 수 있나요?"
"좋아요. 각 프레임워크에 고유한 "목록" 인터페이스가 있다고 가정해 보겠습니다. 다음과 같이 보일 수 있습니다."
자바 코드 | 설명 |
---|---|
|
첫 번째( Alpha ) 프레임워크 의 코드 AlphaList는 프레임워크 코드가 프레임워크를 사용하는 코드와 상호 작용할 수 있도록 하는 인터페이스 중 하나입니다. |
|
AlphaList Manager AlphaListManager는 프레임워크의 클래스입니다. createList 메소드는 AlphaList 객체를 |
|
두 번째( 베타 ) 프레임워크의 코드. BetaList는 프레임워크 코드가 프레임워크를 사용하는 코드와 상호 작용할 수 있도록 하는 인터페이스 중 하나입니다. BetaSaveManager 는 프레임워크의 클래스입니다. saveList 메소드 는 BetaList 객체를저장합니다. |
|
AlphaList 인터페이스에서 BetaList 인터페이스 로 변환하는 «Adapter» 클래스 ListAdapter 클래스는 두 번째 프레임워크에서 BetaList 인터페이스 를 구현합니다 . 누군가 이러한 메서드를 호출하면 클래스 코드는 첫 번째 프레임워크의 AlphaList 인 목록 변수 에 대한 호출을 «전달»합니다 . AlphaList 개체 가 ListAdapter 생성자 에 전달됩니다. setSize 메서드는 다음 규칙에 따라 작동합니다. 목록의 크기를 늘려야 하는 경우 빈(null) 항목을 추가합니다 . 목록의 크기를 줄여야 하는 경우 마지막에 항목을 삭제하십시오. |
|
사용 방법의 예 |
"나는 당신의 마지막 예가 가장 마음에 들었습니다. 매우 간결하고 이해하기 쉽습니다."
GO TO FULL VERSION