문제

문서를 편집하기 위해 MVC/MVP GUI를 연구하고 있습니다. 문서에는 트리 구조가 있으며 일부 노드는 텍스트, 다른 노드는 이미지를 나타냅니다. 앱 모델에는 또한 명령 스택이 포함되어 있으며 명령은 모델에서 직접 작동합니다.

다른 노드마다 컨트롤이 근본적으로 다르기 때문에 각 노드에 대해 개별 MVC/MVP 트라이어드를 구현할 계획입니다. 내가 곤경에 처한 곳은 피어 V 및 C 구성 요소의 생성과 파괴를 동기화하는 방법입니다.

내 아이디어 :
- "childadded"유형 이벤트의 각 노드에서 듣고 해당 이벤트를 기반으로 동료를 만듭니다.
- 모델에서 노드를 생성하기 위해 공장을 사용하고 해당 공장도 피어를 생성하도록합니다.

동적보기/컨트롤러 생성을위한 몇 가지 일반적인 패턴 또는 모범 사례는 무엇입니까?

도움이 되었습니까?

해결책

나는 이것에서 UI 패턴 중 일부를 보는 것이 좋습니다. 대지

귀하의 구체적인 질문은 다음을 수행 할 것입니다.

노드를 표시하는 양식은 Inodeview 인터페이스를 구현합니다.

Inodetreeform 인터페이스의 한 가지 방법은 개별 노드를 추가하는 기능입니다. NodeTreeScreen 객체에서 생성 된 노드 클래스를 전달합니다. 두 가지 주요 속성이 있습니다. 첫 번째는 노드의 키이고 두 번째는 노드 유형입니다.

키가있는 컨트롤에 필드가있는 방식으로 노드를 추가합니다.

Inodetreeform 인터페이스와 함께 Inodeview 인터페이스가 있습니다. 이것은 뷰 영역이나 당신이 전환 할 새로운 양식을 다룰 것입니다.

노드를 클릭하면 키를 전달하여 노드 유형의 노드를 보는 경향이 있습니다. Inodeview 객체 모음이 있습니다. Inodeview의 속성 중 하나는 어떤 유형의 노드인지입니다.

올바른 inodeview를 검색합니다. 현재 Inodeview를 닫고 현재 Inodeview를 검색 한 것에 설정하고 노드를 전달한 다음 자체 표시라고 알려줍니다.

Inodeview가 어떤 말을할지 선택할 수 있습니다. 각기 다른 유형에 대해 양식/컨트롤을 등록 할 수 있습니다. 예를 들어 inodeviewtext, inodeviewimage 등 또는 하나의 옴니버스 inodeviewform 및 inodeview를 구현하는 객체가 실제 도면을 처리하도록합니다.

GUI 툴킷에 따라 하나의 양식이 다양한 인터페이스를 구현할 수 있음을 의미 할 수 있습니다.

노드를 추가, 삭제 및 생성하는 경우, 이는 Inodetreeform과 Nodetreescreen 구현 형식 간의 상호 작용을 통해 수행됩니다. 이것이 할 일 중 하나는 모델을 수정하기 위해 이미 만든 명령을 실행하는 것입니다.

인터페이스 뒤에있는 모든 것을 구현하면 나머지 소프트웨어를 망치지 않고 구현을 변경할 수 있습니다. 다른 인터페이스를 구현하는 객체는 인터페이스를 올바르게 구현하는 한 다른 객체에 영향을 미치지 않으면 서 변경 될 수 있습니다.

이것은 Martin Fowler의 사이트에서 수동적 견해의 변형입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top