Java에서 어댑터 클래스란 무엇입니까? 어댑터 클래스 및 해당 유형의 장점

게시 됨: 2021-05-19

목차

어댑터 클래스란 무엇입니까?

JAVA에서 어댑터 클래스는 수신기 인터페이스의 기본 구현을 허용합니다. 수신기 인터페이스의 개념은 위임 이벤트 모델에서 비롯됩니다. JAVA와 같은 GUI(그래픽 사용자 인터페이스) 프로그래밍 언어에서 이벤트를 처리하는 데 사용되는 많은 기술 중 하나입니다.

GUI 프로그래밍은 주로 이벤트 중심이며 사용자는 관련 영상 및 그래픽을 통해 시스템과 상호 작용합니다. 즉, 화면에서 마우스 포인터의 좌표를 변경하는 마우스 움직임, 버튼 클릭 또는 페이지 스크롤과 같이 사용자가 시작한 모든 활동은 독립적인 이벤트로 간주됩니다.

이러한 각각의 독립적인 이벤트 활동은 애플리케이션이 사용자에게 제공해야 하는 응답을 반복하는 코드 세그먼트에 본질적으로 연결되어 있습니다. 경로는 간단합니다. 사용자(소스)는 이벤트를 생성하고 하나 이상의 리스너 인터페이스로 보냅니다. 이벤트 가능성이 수신되면 리스너 인터페이스는 이벤트를 처리하고 적절한 응답을 반환합니다.

이 경로는 이벤트 처리 프로세스를 입증합니다. 따라서 JAVA의 어댑터 클래스는 더미 메서드 집합이 있는 인터페이스를 구현하는 데 사용됩니다. 프로그래머가 어댑터 클래스를 상속하기로 선택한 경우 특정 수신기 인터페이스 아래에 나열된 모든 메서드를 강제로 구현하지 않아도 됩니다. 프로그래머가 필요한 메서드만 재정의할 수 있도록 어댑터 클래스를 추가로 서브클래싱할 수 있습니다. 즉, 어댑터 클래스를 사용하여 프로그래머는 필드 이벤트에 대한 자체 리스너 인터페이스를 신속하게 구성할 수 있습니다. 이것은 코드를 저장하는 데 도움이 됩니다.

어댑터 클래스와 리스너 인터페이스의 관계는 무엇입니까?

리스너는 프로그래머가 인터페이스 아래에 나열된 대부분의 메소드를 활용하려는 경우에 사용됩니다. 리스너 인터페이스가 클래스에서 직접 구현되는 경우 해당 인터페이스 내의 모든 메서드를 구현해야 하므로 코드가 지나치게 커집니다. 이 복잡성은 어댑터 클래스를 호출하여 해결할 수 있습니다. 어댑터 클래스는 이벤트가 특정 메서드만 호출하는 경우에 필수적입니다.

프로그래머는 그것의 서브클래스를 생성하고 어댑터 클래스를 사용하기 위해 관심 메소드를 재정의하기만 하면 됩니다. 따라서 어댑터 클래스는 둘 이상의 메소드가 있는 JAVA의 리스너 인터페이스에 유용합니다. 이것을 더 잘 이해하기 위해 MouseListener 인터페이스의 예를 살펴보겠습니다. 이 인터페이스는 마우스 상태가 변경될 때마다 알림을 받습니다. 마우스 클릭, mouseExited, mouseEntered, mousePressed 및 mouseReleased의 5가지 메서드가 있습니다.

이벤트에 대한 알림을 받으면 이 방법 중 하나만 필요하더라도 모두 구현해야 합니다. 필요하지 않은 메소드는 비어 있습니다. 어댑터 클래스는 빈 메서드 본문의 이러한 불필요한 구현을 방지하는 데 사용됩니다.

어댑터 디자인 패턴 이해하기

비기술적 표현에서 어댑터는 정의에 따라 두 개의 호환되지 않는 인터페이스가 함께 작동할 수 있도록 구조적으로 설계되었습니다. 따라서 어댑터 패턴은 기존 코드를 변경하지 않고도 호환되지 않는 두 인터페이스를 호환 가능하게 만들 수 있습니다. 해당 인터페이스는 일치하지 않을 수 있지만 내부 기능은 찾고 있는 요구 사항과 일치해야 합니다. 이를 더 명확히 하기 위해 관련 예를 살펴보겠습니다.

우리는 국가마다 전기 소켓, 전압 및 주파수 측정이 다르다는 것을 알고 있습니다. 한 국가의 사양에 따라 다른 국가에서 설계된 기기를 사용해야 하는 경우 해당 기기가 호환되는지 확인해야 합니다.

예를 들어 영국에서는 G형 소켓을, 미국과 일본에서는 A형, B형 소켓을, 인도에서는 C형, D형, M형을 일반적으로 사용합니다. 인도에서 운반되는 노트북이나 모바일 기기는 따라서 미국 및 일본의 전기 사양과 호환되지 않습니다. 이것은 어댑터의 목적이 호환되지 않는 코드를 호환 가능한 코드로 변환하는 데 필수적이 되는 곳입니다.

어댑터 클래스 유형

어댑터 클래스는 Java에서 찾을 수 있습니다. awt.the 이벤트, java.awt.dnd 및 java.swing.event 패키지. JAVA의 해당 수신기 인터페이스가 있는 표준 어댑터 클래스는 이러한 각 패키지에 대해 아래에 언급되어 있습니다.

1. 자바. 앗. 이브

어댑터 클래스 리스너 인터페이스
창 어댑터 창 리스너
키 어댑터 키리스너
마우스 어댑터 마우스 리스너
마우스 모션 어댑터 마우스 모션 리스너
포커스 어댑터 포커스 리스너
컴포넌트 어댑터 ComponentListener
컨테이너 어댑터 컨테이너 리스너
HierarchyBoundsAdapter HierarchyBoundsListener

2. java.awt.dnd

어댑터 클래스 리스너 인터페이스
드래그 소스 어댑터 드래그 소스 리스너
드래그 타겟 어댑터 드래그 타겟 리스너

3. javax.swing.event

어댑터 클래스 리스너 인터페이스
마우스 입력 어댑터 마우스 입력 리스너
내부 프레임 어댑터 내부 프레임 리스너

이들은 각각의 Java 패키지의 Abstract Window Toolkit에 있습니다. 리스너 인터페이스에 포함된 메서드의 특성을 이해하기 위해 몇 가지 예를 살펴보겠습니다.

  1. WindowListener 인터페이스는 창 열기 및 닫기, 창 활성화 및 비활성화, 창 아이콘화 및 해독을 포함하는 창 이벤트와 관련된 메서드를 정의합니다.
  2. KeyListener 인터페이스는 키보드 구성 요소와 상호 작용하는 사용자에 의해 발생하는 키 이벤트를 처리하는 메서드를 정의합니다.
  3. MouseListener 인터페이스는 마우스가 안정적일 때 알림을 받고 사용자의 시각적 프레임에서 구성 요소를 종료, 입력, 클릭, 누르기 또는 해제하는 것과 관련된 잠재적인 이벤트를 수신합니다.
  4. 구성 요소 수신기 인터페이스는 구성 요소 이벤트 가능성을 수신합니다. 여기서 컴포넌트는 버튼, 체크박스, 스크롤바와 같이 사용자와 상호작용하도록 설계된 모든 그래픽 객체를 의미합니다.

클래스 어댑터와 개체 어댑터의 차이점 - 2020 - 다른 사람

기능과 유연성을 보장하기 위해 JAVA와 같은 객체 지향 프로그래밍은 상속 및 구성과 같은 프로그래머 기능을 제공합니다. 다른 클래스에서 해당 기능을 상속하여 특정 코드를 재사용하려고 하면 생성한 하위 클래스가 전체 프로그램 길이 동안 상위 클래스에 종속된 상태로 유지됩니다.

이것은 많은 경우에 시스템을 점점 더 복잡하고 테스트하기 어렵게 만들고 런타임에 기능을 교환하는 것을 힘들게 만듭니다. 합성에서 한 클래스는 다른 클래스만 사용합니다. 인터페이스를 명확하게 정의하면 둘 사이의 분리가 더욱 촉진됩니다.

따라서 클래스 어댑터 대 개체 어댑터 간의 논쟁은 다음과 같이 해결할 수 있습니다. 클래스 어댑터는 상속을 사용하므로 클래스만 래핑할 수 있습니다. 정의에 따라 일부 기본 클래스에서 파생되어야 하기 때문에 인터페이스를 래핑할 수 없습니다. 개체 어댑터는 구성을 사용하므로 클래스와 인터페이스를 모두 래핑할 수 있습니다. 이것은 주로 컴포지션에서 각 클래스 또는 인터페이스가 캡슐화된 비공개 멤버이기 때문에 달성됩니다.

어댑터 클래스의 장점

  1. 어댑터 클래스는 관련 없는 클래스가 함께 작업하는 데 도움이 됩니다.
  2. 어댑터 클래스를 사용하면 동일한 클래스를 여러 가지 방법으로 사용할 수 있습니다.
  3. 사용자에게는 애플리케이션 개발을 위한 플러그형 키트 옵션이 제공됩니다. 따라서 클래스 사용은 재사용이 가능합니다.
  4. 클래스의 투명성을 향상시킵니다.
  5. 클래스에 관련 패턴을 포함하는 방법을 제공합니다.

세계 최고의 대학에서 온라인으로 소프트웨어 엔지니어링 과정을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

결론

이 기사를 통해 우리는 JAVA의 어댑터 클래스 메커니즘, 어댑터 클래스를 포함하는 세 가지 주요 패키지, 어댑터 클래스가 프로그래머에게 주는 이점을 이해했습니다. 어댑터 클래스는 다양한 이벤트를 수신하기 위한 추상 클래스로 리스너 객체 생성의 편의를 위해 존재합니다. 다양한 기능을 갖춘 어댑터 클래스는 프로그래머에게 Swing 방법론을 통해 혁신적 플랫폼을 제공합니다.

Java 기술을 향상시키려면 이러한 Java 프로젝트에 손을 대야 합니다. Java, 전체 스택 개발에 대해 자세히 알아보려면 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 Executive PG 프로그램을 확인하십시오. 이 프로그램은 일하는 전문가를 위해 설계되었으며 500시간 이상의 엄격한 교육, 9+ 시간을 제공합니다. 프로젝트 및 과제, IIIT-B 동문 상태, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

Java에서 어댑터 클래스는 무엇입니까?

어댑터 클래스는 어댑터 패턴을 사용하여 정의된 클래스입니다. 어댑터를 사용하면 원래 클래스를 수정하지 않고 기존 클래스에 새 기능을 추가할 수 있습니다. 예를 들어, java.util.Scanner 클래스는 java.util 패키지에서 가져온 것입니다. Scanner 클래스는 파일이 InputStream이 아니기 때문에 파일에서 읽을 수 없습니다. 파일에서 읽기 위해 InputStream을 인수로 받아들이고 처리된 데이터를 객체로 반환하는 어댑터 클래스를 만듭니다. 어댑터 패턴은 코드를 수정하지 않고 기존 클래스의 기능을 확장하는 데 사용됩니다.

Java의 디자인 패턴은 무엇입니까?

디자인 패턴은 소프트웨어 디자인의 주어진 컨텍스트 내에서 일반적으로 발생하는 문제에 대한 일반적으로 재사용 가능한 솔루션입니다. 코드로 바로 변환할 수 있는 완성된 디자인이 아닙니다. 다양한 상황에서 사용할 수 있는 문제를 해결하는 방법에 대한 설명 또는 템플릿입니다. 객체 지향 프로그래밍에서 디자인 패턴은 소프트웨어 시스템의 디자인과 구현을 용이하게 하는 확립된 규칙입니다. Java에는 여러 가지 디자인 패턴이 있습니다. 디자인 패턴을 다른 언어에서 가져와야 할 필요는 없습니다. 디자인 패턴은 매우 간단하고 짧은 형식으로 작성할 수 있습니다.

Java에서 가장 많이 사용되는 디자인 패턴은 무엇입니까?

Java에서 많은 디자인 패턴을 찾을 수 있습니다. 가장 많이 사용되는 디자인 패턴은 Factory Pattern입니다. 엔터프라이즈 개발에 많은 응용 프로그램이 있습니다. 애플리케이션의 구체적인 클래스에 대한 종속성을 제거하는 데 도움이 됩니다. 실제 사례를 들어보겠습니다. 전자 상거래 응용 프로그램에서 테스트 및 프로덕션 환경 모두에서 사용자 개체를 생성해야 하는 요구 사항이 있을 수 있습니다. 사용자 클래스에는 Admin, Shopkeeper, Seller, User 등과 같은 많은 하위 클래스가 있을 수 있습니다. 팩토리 패턴의 일반적인 기본 메소드는 다음과 같습니다. public class UserFactory { public static Object create() { User user = createAdmin(); // 관리자가 허용되는지 확인 return user ; // 현재 사용자를 반환 } }. 사용자 클래스가 구체 클래스에 의존하지 않는 방법은 여기를 참조하십시오. 완전한 예는 아니지만 Factory 패턴이 어떻게 작동하는지 보여줍니다.