GWT-EXT - 이벤트 후 특정 ContentPanel에 위젯을 추가하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/111854

  •  02-07-2019
  •  | 
  •  

문제

첫 번째 게시물은 나에게 상처를주지 않습니다 :)

나는 BorderLayout 일반적인 북쪽, 서쪽, 중앙, 남쪽 패널이 있습니다.에 서쪽 ContentPanel, 나한테는 Tree.이벤트(OnClick) 발생합니다. 특정 대화 상자를 표시하고 싶습니다. 센터 ContentPanel.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?현재 저는 다음과 같은 기능을 사용하고 있습니다. returnPanel() 센터를 돌려주는 것 ContentPanel.이벤트 핸들러에서 나는 이 함수를 호출합니다. (MainWindow.returnPanel().add(myDialog)).

도움이 되었습니까?

해결책

이를 수행하는 방식은 직관적이고 작동하지만 응용 프로그램의 여러 부분이 강력하게 결합되어 있기 때문에 응용 프로그램이 커지면 지옥을 일으키기 시작할 것입니다.이 문제에 대한 해결책은 MVC 디자인 패턴 그리고 관찰자 디자인 패턴.

이상적으로는 MVC 패턴을 사용하면 어떤 위젯도 다른 위젯을 '알지' 못하게 되기를 바랍니다.모든 위젯을 알고 있는 클래스는 컨트롤러(Controller)뿐입니다.하나의 위젯이 다른 위젯에 메시지를 보내거나 신호를 보내야 할 때마다 적절한 방법으로 해당 위젯에 메시지를 전달하는 Controller 클래스에 이를 알려줍니다.이러한 방식으로 두 위젯이 분리되어 다른 위젯을 손상시키지 않고 하나를 변경할 수 있습니다.컨트롤러가 응답해야 하는 가능한 모든 작업을 열거하기 위해 열거형을 사용할 수 있습니다.

이벤트가 발생할 때 위젯이 컨트롤러만 호출해야 하는 경우 해당 위젯에 대해 적절한 이름의 (정적) 메서드를 호출하고 작업을 완료하면 됩니다.그러나 여러 다른 클래스에 이벤트에 대한 정보가 필요한 경우 클래스를 변경하지 않고도 여러 다른 클래스에 신호를 보낼 수 있는 Observer 패턴을 사용하는 것이 좋습니다.단순히 eventHandler에서 informPObservers()를 호출하기만 하면 됩니다.청취자가 몇 명인지, 어떤 유형인지는 중요하지 않습니다.이런 방식으로 클래스를 청취자로부터 분리할 수도 있습니다.컨트롤러만 수신하는 경우에도 '콜백' 코드를 클래스의 다른 코드와 명확하게 구분하므로 패턴을 사용하는 것이 좋습니다.

그런데, 이것은 특히 GWT나 심지어 Java와도 관련이 없습니다.

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