2011-06-14 1 views
21

Google IO 비디오를 읽은 후 MVP가 활동 및 장소와 어떤 관련이 있는지 혼동합니다.전체 GWT MVP와 활동 및 장소에 대한 혼란

나는 스레드가 다시 잠시 게시 발견 -> GWT 2.2 MVP vs. GWT 2.1 Activities-Places

"MVP 아키텍처 MVP는 개념이며, 그것을 할 수있는 방법 중 하나는 장소-활동 프레임 워크입니다."

I 또한 "MVP로 활동하고 장소"

우리는

우리는에 혼합 할 수

"MVP없이 활동 및 환경을"준 수

"발표자는 활동과 유사하다"듣고 > http://code.google.com/p/gwt-platform/

정말 혼란 스러워요 -

그때 나는이 같은 물건을 알아 내려고 노력하고 있어요

을 "MVP는 아무것도하지만 어떻게 우리가 테스트하고 쉽게 코드를 구성 할 수 있도록 우리는 우리의 프로젝트를 구성하지 않습니다." 모든 혼란을 끝내기 위해 원 스톱 스레드가 필요합니다.

답변

21

TL : DR : 장소 및 활동이 MVP와 관련이 없습니다.

장소는 앱으로 이동하는 것입니다. 한 곳에서 다른 곳으로 이동합니다. 그리고 활동 "당신이 어디에"와 "당신이 무엇을보고"바인딩에 도움이되는 장소의 상단에 빌드 :

  • 내가 SO의 홈 페이지에있어, 주요 부분은 모든 질문의 목록을 보여줍니다 주제의 오른쪽 상단에는 내가 좋아하는 태그가 표시되고 태그 필터 설정에 도움이되며 아래에는 추가, 추가 태그에는 최근 태그 목록, 최근 배지 목록이 표시됩니다.
  • 이 질문 페이지의 주요 부분은 질문과 답변을 표시하고 오른쪽 상단이 질문 태그의 정보로 바뀌고 추가, 연결된 질문 및 관련 질문이 이어집니다.

이 "부품"(지역)의 각각은 PlaceChangeEvent의 듣고 물어 ActivityManager들에 의해 관리되는 자신의 그 지역에 표시 할 ActivityActivityMapper을 관련.

모든 것이 탐색에 관한 것입니다.

MVP와 관계가 없습니다 (공식 문서의 내용에도 불구하고).MVP를 사용하는 경우 "보기"(해당 활동이 start 메소드의 인수로 수신 된 AcceptsOneWidget으로 다시 전달되는 활동)의 제어하에 "발표자"활동을 만들 수 있습니다. 이것은 규칙이 아니며, 예를 들어 mobilewebapp 샘플에서 액티비티와 발표자가 디커플링되는 Google은 experimenting입니다.

+0

, 당신이 정확히 무엇을 의미합니까 활동 및 환경 만 활동 및 장소

  • MVP ? 마찬가지로 모델 뷰 프리젠터를 독자적으로 분리하고 내 구현으로 인터페이스와 상호 작용하도록할까요? –

  • +0

    활동이 발표자 인 경우 자신의 관계가 아닙니까? : | –

    +1

    Re. "MVP를 사용하는 경우": MVP는 패턴이므로, 프리젠 테이션 로직을 액티비티 (즉, 발표자로 지정)와 다른 클래스의 뷰에 넣는 것을 의미합니다. 레. 당신의 두 번째 코멘트는, "뷰가 일반적으로'Composite's"가된다고하면, MVP와 관련된'Composite '가되는 걸까요? 어쩌면 내가 MVP라고 말하면 분명하고 활동은 직각 문제입니다 (하나는 코딩 패턴이고 다른 하나는 인앱 탐색에 대한 툴킷/마이크로 프레임 워크입니다) –

    7

    활동은 발표자입니다. 장소는 히스토리 토큰에 대한 래퍼 일뿐입니다.

    혼란은 MVP GWT 개념이 도입 된 Google IO 비디오에서 시작되었지만 구현이 제공되지 않았습니다. 그래서 사람들은 자신을 굴리기 시작했습니다. 그런 다음 Google은 개념을 자세히 설명한 2.1 문서를 작성하여 다운로드 할 수있는 예제 코드 만 제공했습니다. 나중에 2.2 절에서 전체 구현을 소개했다 (Activities et al.

    MVP 경로를 이동하려면 구현을 선택해야합니다. 액티비티는 아마도 공식적인 것이므로 아마도 가장 좋을 것입니다.

    2

    두 가지 개발 패턴으로 생각하면 분리 된 상태로 유지하는 것이 매우 쉽습니다. MVP는 관심사와 활동을 분리하는 패턴이며 장소는 URL 및 기록 관리를위한 도구입니다.

    여기 MVP, Activities and Places Confusion

    9

    MVP 모델, 보기, 발표자에 대한 스탠드, 혼란을 정리 도움이되는 좋은 기사, 그것은 코딩 패턴이다. 이것은 단지 MVC (모델, 보기, 컨트롤러)에서 진화 한 것입니다. MVC wikipedia page을 참조하십시오.

    MVP와 MVC의 차이점은 MVP에서는 모델과 뷰가 서로를 알지 못한다는 점입니다. MVP에서는보기가 가능한 한 바보가되어야합니다. 모든 상호 작용은 발표자가 처리합니다. 이는 코드를 올바르게 구성하는 방법 일뿐입니다.

    일부 사람들은 이런 방식으로 코드를 구성하기 위해 수행해야 할 작업량을 줄이기 위해 프레임 워크를 만들었습니다. 다양한 MVP 구현을 살펴보십시오. 웹에서 쉽게 찾을 수 있습니다.

    MVP를 사용하면 동작이나보기를 가짜로 만드는 다른 구현 (일반적으로 모의)으로보기를 쉽게 바꿀 수 있으므로 코드를 더 쉽게 테스트 할 수 있습니다. 따라서 브라우저 환경에서 테스트를 수행 할 필요가 없습니다 (GWT 뷰는 HTML 뷰입니다). 따라서 테스트가 더 빨리 진행됩니다.

    구글 문서는 말한다 :

    활동과 환경 프레임 워크는 당신이 당신의 응용 프로그램 내에서 북마크 된 URL을 만들 수 있습니다.

    그래서 활동 및 장소는 단순한 MVP 프레임 워크 이상의 것입니다. 그럼에도 활동발표 자입니다.

    public interface Activity { 
    
        String mayStop(); 
    
        void onCancel(); 
    
        void onStop(); 
    
        void start(AcceptsOneWidget panel, EventBus eventBus); 
    } 
    

    당신은 구글에서 장소 및 기타 개체를 사용하지 않고 발표자의 활동 인터페이스를 사용할 수 있습니다. 하지만이 경우 활동 시작 및 중지를 담당하는 일종의 활동 관리자 코드를 작성해야합니다. 시작과 멈춤에서 당신은 아마 당신의보기를 만들고, DOM에 추가하고, 이벤트 핸들러를 등록하고 싶을 것입니다. 그리고 당신이 멈 추면이 모든 것을 파괴하기를 원할 것입니다.

    MVP 구현에서 동일한 역할을하는 bind() 및 unbind() 메소드를 찾을 수 있습니다.

    Google의 Activity Place 구현 기능은 장소 인 장소의 모든 객체에서 비롯되며 활동을 시작하거나 중지하고 기록을 처리합니다.

    위의 다른 사용자와 마찬가지로은 URL을 나타 내기위한 것입니다.

    구글의 Activity Place 구현에는 많은 객체가 관련되어 있습니다. 이해를 돕기위한 스키마가 있습니다. 당신은 그 활동이 온통 작은 부분 일뿐입니다. You can find some more details on my blog in this article

    enter image description here

    0

    두 개의 독립적 인 차원 디자인 패턴 있습니다 - 당신이있을 수 있습니다

    활동 및 장소 - 아니 패턴 - MVP

    탐색 및 화면 탐색 - 아니 탐색 은 다음 중 하나를 따르는 신청서

    • 없음 MVP, 아니 활동 및 장소
    • 만 MVP
    • "당신이 MVP를 사용하는 경우"