내가 궁금하고 어떤이 튜토리얼 https://developers.google.com/web-toolkit/articles/mvp-architecture 보고 된이 MVP 스타일이 때마다 사용자가가는 것을 페이지를 변경하고 발표자의 새로운 인스턴스를 생성하는 방법을 효율적으로입니다. 발표자가 싱글 톤이라면 더 좋을까요? 필자의 최종 목표는 PhoneGap을 사용하여 앱을 배포하여 성능 향상이 유용 할 수 있도록하는 것입니다.GWT 예 MVP 응용 프로그램
답변
모두 구현에 따라 다릅니다.
상태를보기에 저장하려면 싱글 톤 발표자 /보기로 이동하십시오.
뷰를 초기화 할 필요가 없으므로 효율적입니다. 다른 뷰의 일부 트랜잭션이 첫 번째 뷰를 변경해야하는 경우에는 효율성이 떨어집니다. 이 경우 첫 번째 발표자에게 걸려있는 두 번째 발표자에서 이벤트를 발생시키고 이에 따라보기를 수정해야합니다. 이것은 응용 프로그램을 예측하기 어렵게 만듭니다.
각 발표자 /보기가 독립적 인 경우 단일보기/발표자가해야 할 일입니다.
다른 경우에는보기에서 사용하는 양식의 데이터를 다시 초기화하기 위해 새 발표자 /보기로 이동합니다.
곰은 다음과 같은 문제가 발생할 것입니다 (예 : 이벤트 버스 등) 응용 프로그램 다양한 변수를 사용하여 각각의 새로운 발표자가 파괴되지 않을 것 (쓰레기 수집 된) 비록 마음에 :
모든 시간을 당신이로드 보기와 해당 발표자에 걸린 이벤트가 발생하면 이벤트와 모든 계산이 새 발표자 /보기가 생성 될 때까지 여러 번 발생합니다.
예 : -Presenter1/뷰 1로드하고 -Presenter2/뷰 2가 -Presenter1 (새 인스턴스)/뷰 1 (새로운 인스턴스)를로드 일부 이벤트로드를 잡아 어떤 이벤트를 잡는다. - 이벤트가 -Presenter1 이벤트 -Presenter1 (새 인스턴스)를 잡는다 글로벌 이벤트 버스를 통해 발생하는 것은 본질적으로
그래서 이벤트를 (즉, 규칙 아닌) 새로운 발표자가 웹 -를 GWT 응용 프로그램을 제공 잡는다 페이지를 전체 포스트 백 느낌으로 표시하고, 다른 경우에는 기존 양식을로드하는 데스크톱 응용 프로그램 느낌을 갖습니다.
희망이 도움이됩니다.
싱글 톤을 사용하지 마십시오 ... 퍽!
발표자를 늦게 초기화하고 참조를 저장하여 재사용 할 때마다 매번 새 인스턴스를 만들 필요가 없습니다.
보기를 다시 사용하는 것과 마찬가지로 발표자를 재사용하는 방법을 강조하기 위해 다음 예제를 가져 와서 https://developers.google.com/web-toolkit/articles/mvp-architecture-2#code_splitting에서 수정했습니다. RunAsyncCallback를 통해 코드 분할의 성능 이점 게다가
public void onValueChange(ValueChangeEvent<String> event) {
String token = event.getValue();
if (token != null) {
if (token.equals("list")) {
GWT.runAsync(new RunAsyncCallback() {
...
public void onSuccess() {
// lazily initialize our views and presenters, and keep them around to be reused
if (contactsView == null) {
contactsView = new ContactsViewImpl<ContactDetails>();
}
if (contactsPresenter == null) {
contactsPresenter = new ContactsPresenter(rpcService, eventBus, contactsView);
}
contactsPresenter.go(container);
}
});
}
...
}
은, 본질적으로, 당신은의 AppController 클래스 필드 각 발표자에 대한 참조를 유지하고 역사 토큰을 전환 할 때 다시 사용할.
gwt-platform을 사용하는 것이 좋습니다. 나는 그것을 여러 프로젝트에서 사용했지만 결코 성능에 문제가 없었습니다.이는 매우 강력하고 우수한 성능을 유지하면서 향후 애플리케이션을보다 쉽게 확장 할 수 있도록 애플리케이션을 구조화하는 데 도움이됩니다.
- 1. GWT MVP 예
- 2. GWT 모범 사례 - MVP
- 3. 안드로이드 MVP 응용 프로그램
- 4. 단일 화면 응용 프로그램에서 GWT MVP 사용
- 5. GWT MVP 내역 뒤로
- 6. 다중 EntryPoints가있는 GWT MVP
- 7. GWT MVP implentation
- 8. GWT Mvp 및 핸들러
- 9. GWT MVP - 응용 프로그램을 구성하는 방법
- 10. GWT MVP 탐색 사이드 바
- 11. GWT 및 MVP; 렌더링 로직
- 12. GWT MVP 세션 데이터 저장
- 13. 쿠키 및 기록이있는 GWT MVP
- 14. GWT 멀티 응용 프로그램
- 15. 모듈화 GWT 응용 프로그램
- 16. GWT 응용 프로그램
- 17. WAP 응용 프로그램 예
- 18. 간단한 GWT OpenID 예
- 19. GWT 및 MVP 패턴보기 모의
- 20. MVP GWT에서보기 레이어를 만드는 우수 사례 GWT
- 21. MVP 응용 패턴이란 무엇입니까?
- 22. GWT 응용 프로그램 내에서의 자제력
- 23. 메모리 사용량 GWT 응용 프로그램
- 24. GWT 응용 프로그램 구성 파일
- 25. GWT 응용 프로그램 프로파일 도구
- 26. AppEngine에서 GWT 응용 프로그램 보안
- 27. Godaddy에 GWT 응용 프로그램 배포
- 28. Gwt : 메뉴 기반 응용 프로그램
- 29. gwt 다중 페이지 응용 프로그램
- 30. Joomla에서 GWT 응용 프로그램 인증
나는 그것을 그대로 두어야하는 것처럼 들립니다. 이벤트를 변경하기 위해 이벤트를 던지면 다음 페이지로 넘어가려는 이벤트를 트리거 한 페이지의 모든 데이터가 이벤트 객체 자체에 포함되어야한다고 생각합니까? – MayoMan
클라이언트 측 데이터베이스 (기본적으로 데이터를 보유하고 캐시하는 클래스)를 구현하면 발표자와 뷰에서 데이터를 공유하는 데 도움이됩니다. http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwDataGrid에는 ContactsDatabase 클래스의 예가 있습니다. – Neeko