문제

할당을 위해 일부 코드를 리팩터링 중입니다. 현재 뷰에는 많은 버튼과 메뉴가 있고 event.getSource()를 사용하여 수행할 작업을 결정하는 하나의 작업 리스너가 있습니다.내가 읽은 바에 따르면 사람들은 각 GUI 구성 요소가 일종의 공장을 통해 생성된 자체 액션 리스너를 갖는 것이 더 낫다고 생각하는 것 같습니다.그러나 코드를 약간 정리하는 것 외에 이것이 제공하는 다른 이점은 무엇입니까? 이것은 또한 훨씬 더 많은 개체가 힙에 있고 성능에 영향을 미칠 수 있다는 것을 의미하지 않습니까?

감사해요,

알리

도움이 되었습니까?

해결책

별도의 리스너를 사용한다는 것은 리스너에서 수행해야 할 작업을 결정하기 위해 부울 테스트를 수행할 필요가 없다는 의미입니다.여기에는 두 가지 이점이 있습니다.

  • 먼저 코드가 조금 더 빠르게 실행됩니다.

  • 둘째, 코드의 유지 관리성과 확장성을 향상시킵니다.새 구성 요소를 추가해야 하는 경우 기존 메서드를 수정할 필요가 없습니다.

하나의 리스너(종종 애플릿이나 애플리케이션 객체 자체)가 여러 구성 요소에 대한 리스너 역할을 하도록 하려는 경우 메서드 호출의 핵심인 기본 디스패치를 ​​실행 취소하고 수동으로 디스패치를 ​​구현하게 됩니다.이를 위해서는 이벤트를 처리하는 다양한 구성 요소를 구별하기 위해 일종의 스위치 메커니즘을 사용해야 합니다.시스템은 당신보다 이를 수행하는 데 더 잘 갖추어져 있습니다.이 스위치 구조는 오류가 발생하기 쉽고 프로그램이 커짐에 따라 유지 관리가 어렵습니다.파견은 시스템에 맡기세요.

원천: Java 이벤트 패턴

다른 팁

트레이드 오프입니다. 뭉치가있는 코드 if 소스에서는 추악한 것으로 간주되며, 많은 청취자가 기억을 어지럽히고 성능에 부정적인 영향을 줄 수 있습니다.

선택을 감안할 때, 나는 보통 내가 작성해야 할 코드의 양을 최소화하는 것을 위해갑니다. 코드가 적 으면 일반적으로 버그에 대한 기회가 줄어 듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top