Tôi đang sử dụng mô hình MVP từ ứng dụng GWT của tôi làm theo tấm gương đưa ra ở đây http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.htmlthuyết trình unbinding cần thiết trong GWT
Tôi có một MainPresenter đơn và sub-người dẫn chương trình cho mỗi bảng điều khiển trong các MainView. Để hiển thị một tiểu trình mới, tôi làm điều gì đó như thế này:
presenter = new PresenterA(new ViewA(), ....);
presenter.go(panel) // presenter clears the panel and itself to the panel
Khi PresenterA
được tạo ra, nó liên kết với bản thân các sự kiện trong ViewA
. Câu hỏi của tôi là cách thích hợp để chuyển sang người trình bày mới là gì? Ngay bây giờ, tôi chỉ cần tạo một người trình bày mới và đính kèm nó vào cùng một bảng điều khiển như sau:
presenter = new PresenterB(new ViewB(), ....);
presenter.go(panel) // presenter clears the panel and itself to the panel
Tôi có một số nghi ngờ về phương pháp này. Trước tiên, tôi có gây ra rò rỉ bộ nhớ khi chuyển sang trình bày mới không? Tôi đã mất cả hai trường tham chiếu đến người trình bày cũ và xóa nó khỏi bảng điều khiển mà nó được đính kèm. Tôi cho rằng điều này có nghĩa là nó phải được thu gom rác, nhưng tôi không thực sự chắc chắn. Thứ hai, điều gì sẽ xảy ra với các ràng buộc sự kiện mà người trình bày cũ đã có? Những ràng buộc này có ngăn cản người trình bày không bị thu gom rác không? Tôi có cần unbind chúng trước không?
Cách chính xác xử lý tình huống chuyển đổi diễn giả mà không bị rò rỉ bộ nhớ và liên kết với sự kiện "đã chết" là gì.