GUI가 개별 Presenter 및 Models를 개별 뷰로 취급하는 여러 하위 구성 요소로 구성되는 경우 GUI를 함께 붙일 패턴이 있습니까? 일부 하위 구성 요소는 지속적으로 화면에 나타나고 다른 구성 요소는 스왑 아웃 및 스왑 아웃됩니다.플러그인 기반 GUI에서 Model-View-Presenter 라이프 사이클 관리
- 런타임에 GUI에 추가되는 하위 구성 요소에 대해 각각의 MVP 트라이어드를 인스턴스화하는 좋은 공장 패턴은 무엇입니까?
- GUI의 영구 "컨테이너"부분과 하위 구성 요소를 어떻게 접착합니까? 다른 발표자들을 하나로 묶어주는 "신 발표자"가 있을까요?
업데이트 : 이제 Eclipse의 확장 메커니즘과 유사한 것으로 촬영하고 있습니다. 플러그인은 자신이 제공하는 기능에 대한 전역 레지스트리에 자신을 등록합니다. 데이터를 반환하거나 뷰 렌더링과 같은 기능이 필요할 때 레지스트리를 쿼리하고 반환 된 함수를 호출합니다 (이것은 순수한 JavaScript이므로 인터페이스를 사용하지 않습니다). 필자는 모든 것이 (메인보기조차도) 플러그인인 순수한 플러그인 방식으로 갈 것입니다. 또한 이벤트 버스를 사용하여 다양한 발표자가 알맹이없이 의사 소통 할 수 있도록 할 수 있습니다.
이제 플러그인이 View에 기여하려고 할 때 MVP 트라이어드를 초기화하고 뷰를 부모 컨테이너 (모듈 외부)로 렌더링하는 방법에 대해 좀 더 구체적으로 질문 할 것입니다. 아마 외부에서 전달 된 컨테이너에 View 자체를 렌더링하고 View and Model (필요한 경우)을 Presenter에 주입해야합니다. 또 다른 방법은 View가 컨테이너 내부에 배치 할 수있는 구성 요소를 반환하는 것이지만, 이는 GUI 프레임 워크 관련 View 구현 내부의 모든 것을 유지하는 나의 임시적인 반대가 아닐 수 있습니다. 나는 공장/접착제 메커니즘이 프레임 워크에 독립적 일 수 있다면 더 선호한다.
OK 나는
지금은
@David Murdoch. David에게 감사드립니다. 대문자는 내가 사는 "You"가있는 사람들을 언급 할 때 사용됩니다. 참고 : 당신이 뭔가를 귀찮게하기 때문에 사람들의 대답을 편집해서는 안됩니다. 누군가 불쾌 해 할 수도 있습니다. – naugtur