> Java > java지도 시간 > Java MVC 아키텍처에서 ActionListener를 어디에 배치해야 합니까?

Java MVC 아키텍처에서 ActionListener를 어디에 배치해야 합니까?

Susan Sarandon
풀어 주다: 2024-11-30 18:19:15
원래의
581명이 탐색했습니다.

Where Should ActionListeners Be Placed in a Java MVC Architecture?

Java의 MVC 아키텍처와 ActionListener 배치

MVC(Model-View-Controller) 아키텍처에서 ActionListener의 배치는 다음과 같습니다. 우려사항 분리를 유지하기 위한 구체적인 지침.

ActionListener

기술적으로 ActionListener는 사용자 입력을 처리하고 모델과 상호 작용하므로 컨트롤러 계층에 속합니다. 그러나 Java에서 널리 사용되는 GUI 프레임워크인 Swing은 MVC 패턴을 엄격하게 준수하지 않습니다. 가독성과 유지 관리성을 위해 ActionListener를 View 또는 Controller 클래스 외부의 별도 패키지에 배치하는 것이 일반적이지만 여전히 Controller에서 관리해야 합니다.

Controller와 ActionListener 간의 통신

Controller가 아닌 ActionListener 내에서 Controller 기능을 실행하려면 하위 클래스:

  1. 컨트롤러에서 예상하는 콜백 메서드를 정의하는 인터페이스 또는 추상 클래스를 만듭니다.
  2. ActionListener가 포함된 클래스에서 이 인터페이스를 구현합니다.
  3. 통과 초기화 시 컨트롤러에 구현된 인터페이스의 인스턴스입니다.
  4. 그러면 컨트롤러는 인터페이스를 구독하고 다음과 같은 경우 콜백 메서드를 호출할 수 있습니다. 필요합니다.

예:

// Interface for the View to notify the Controller of events
public interface LoginViewListener {
    public void onLoginRequested();
    public void onLoginCancelled();
}

// Class containing the ActionListener
public class LoginPane extends JPanel implements LoginView {
    private LoginViewListener listener;
    // ...

    public void setLoginViewListener(LoginViewListener listener) {
        this.listener = listener;
    }
    // ...

    @Override
    public void onLoginRequested() {
        if (listener != null) {
            listener.onLoginRequested();
        }
    }
}

// Controller class
public class LoginController implements LoginViewListener {
    private LoginPane loginPane;
    // ...

    public LoginController() {
        loginPane = new LoginPane();
        loginPane.setLoginViewListener(this);
    }

    @Override
    public void onLoginRequested() {
        // Perform login operations
        // ...
    }
    // ...
}
로그인 후 복사

이 접근 방식을 사용하면 뷰와 컨트롤러가 인터페이스를 통해 상호 작용하는 분리되고 유연한 디자인이 가능해 유지 관리 용이성과 코드 재사용성.

위 내용은 Java MVC 아키텍처에서 ActionListener를 어디에 배치해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿