2008-09-21 6 views
0

첫 번째 게시물은 나를 해치지 마십시오.GWT-EXT - 이벤트 후 특정 ContentPanel에 위젯을 표시하는 가장 좋은 방법은 무엇입니까?

저는 보통 North, West, Centre, South Panels에 BorderLayout을 사용하고 있습니다. 웨스트ContentPanelTree이 있습니다. 이벤트 (OnClick)가 발생하면 센터ContentPanel에 특정 대화 상자를 표시합니다.

나를 위해 가장 좋은 방법은 무엇입니까? 현재 센터 을 반환하는 returnPanel()이라는 함수를 사용하고 있습니다. 이벤트 처리기에서 나는이 함수를 (MainWindow.returnPanel().add(myDialog))이라고 부른다.

답변

1

당신이하고있는 방식은 직관적이며 작동하지만 응용 프로그램의 각 부분이 강하게 결합되어 있기 때문에 응용 프로그램이 커지면 지옥이 생기기 시작할 것입니다. 이 문제에 대한 해결책은 MVC design patternobserver design pattern입니다.

이상적으로, MVC 패턴을 사용하면 위젯이 다른 위젯을 '알기'를 원하지 않습니다. 컨트롤러 인 모든 위젯을 아는 클래스 만 있습니다. 하나의 위젯이 다른 위젯에 메시지를 보내거나 신호를 보낼 필요가있을 때마다 적절한 위젯으로 메시지를 중계하는 Controller 클래스에 알려줍니다. 이렇게하면 두 위젯이 분리되고 다른 위젯을 손상시키지 않고 변경할 수 있습니다. 열거 형을 사용하여 컨트롤러가 응답해야하는 모든 가능한 작업을 열거 할 수 있습니다.

이벤트가 발생했을 때 위젯이 컨트롤러 만 호출해야한다면 간단히 적절한 (정적) 메소드를 호출하고 완료 할 수 있습니다. 그러나 다른 여러 클래스에 이벤트를 통보해야하는 즉시 Observer 패턴을 사용하는 것이 좋습니다.이 패턴을 사용하면 클래스를 변경하지 않고도 여러 개의 다른 클래스를 알릴 수 있습니다. 그것은 단순히 eventHandler에서 notifyPObservers()를 호출하기 만하면됩니다. 얼마나 많은 청취자가 있고 어떤 유형인지는 무의미합니다. 이렇게하면 클래스를 청취자와 분리 할 수 ​​있습니다. 컨트롤러 만 청취하더라도 클래스의 다른 코드에서 '콜백'코드를 명확하게 분리하므로 패턴을 사용하는 것이 좋습니다.

현재 BTW는 GWT 또는 Java와 관련이 없습니다.