MVP и UserControls и вызов

Я не знаю о производительности этого. Но как насчет наложения различных частей автомобиля, но с использованием одного и того же размера всего автомобиля. Например, у вас есть изображение всей машины, и вы стираете все, кроме двери. На другом изображении вы стираете все, кроме капота. Если вы положите одно изображение выше другого, это сделает весь автомобиль, и размер экрана не повлияет на вас, потому что все изображения будут иметь одинаковый размер. Затем вы можете использовать стиль оттенка, чтобы изменить цвет каждого слоя.

13
задан Michael Meadows 15 January 2009 в 15:17
поделиться

3 ответа

Предъявитель должен считаться "автономным состоянием" на уровне представления. Это означает, что это ответственно за обеспечение, что презентация представления состояния модели находится в синхронизации. Причина я поднимаю это, состоит в том, потому что "шаблон" MVP часто теряется в догматическом представлении того, как должны быть разделены вещи. Кажется, что это - одна причина, Martin Fowler решил попытаться разъяснить терминологию вокруг шаблона MVP.

Моя привилегированная разновидность MVP является пассивным представлением, таким образом, мой ответ базируется прочь этого.

Я реализую составные пользовательские элементы управления, и формирует очень часто использование пассивного шаблона представления. Существует по существу 3 различных конфигурации:

  1. Один предъявитель для всех пользовательских элементов управления в иерархии. Сгладьте представление с помощью интерфейса.
  2. Один предъявитель для каждого пользовательского элемента управления в составном дереве. Каждый родительский предъявитель ответственен за инстанцирование и инициализацию его дочерних предъявителей. Пользовательские элементы управления создаются во время проектирования и могут функционировать без предъявителя (без поведения презентации)
  3. Один предъявитель для каждого пользовательского элемента управления в составном дереве. Все предъявители слабо связываются через высокоуровневый класс контроллера. Класс контроллера ответственен за construcing предъявитель, обеспечивая электричеством их, и координируя их события.

Хотя это - решение последней инстанции для меня (из-за его сложности), я думаю, что последняя опция является решением, которое Вы ищете.

13
ответ дан 1 December 2019 в 23:49
поделиться

Ваши вопросы являются общими, который могло применить множество схем.

В этом случае мое предположение - то, что необходимо посмотреть на Шаблон "наблюдатель".

У Вас есть интерфейс, который что-либо, что использует то представление, реализовало бы. Затем это зарегистрировало бы себя, когда приложение инициализирует с набором тех интерфейсов. Любая команда, которая должна обновить то представление, пересекла бы набор, уведомляющий, что каждое представление должно быть обновлено.

В отличие от типичных примеров представлениями были бы Пользовательские элементы управления. У Вас есть гибкость создания любой реализации элемента UI, которые взаимодействуют через интерфейс так, Вы могли использовать диалоговые окна, полные формы, и т.д. в дополнение к Вашему Пользовательскому элементу управления.

Наконец помните, что Пользовательский элемент управления НЕ является представлением, но реализацией Представления. Безотносительно схемы Вы принимаете Вас, может определить то, что Представление настолько глубоко, как Вы хотите и имеете реализацию Пользовательского элемента управления тот интерфейс.

0
ответ дан 1 December 2019 в 23:49
поделиться

Я сталкивался с этой точной проблемой в течение нескольких месяцев в приложении, я продолжаю работать. Заключение, что я совсем недавно приехал в, состоит в том, что во многих случаях могло бы быть невозможно применить шаблон MVP и в окне И В уровнях пользовательского элемента управления, не "повреждая" шаблон.

Моя мысль о нем - то, что пользовательский элемент управления является частью реализации представления, и предъявитель не должен знать то, что продолжается в реализации представления, что означает, что предъявитель уровня окна следовательно не должен знать о предъявителе пользовательского элемента управления, и следовательно не должно быть никакой коммуникации между ними, включая инстанцирование последнего первым. Можно было бы утверждать, что предъявитель пользовательского элемента управления является частью реализации представления окна, и таким образом, представление окна может инстанцировать предъявителя пользовательского элемента управления. Но это не может ввести образцовые классы, в которых нуждается предъявитель, потому что представление, как предполагается, не знает о них.

Заключение, что я думаю, что прибываю в, состоит в том, что ВСЕ пользовательские элементы управления являются view-implementation-specific и так должны содержаться полностью в бункере представления большего шаблона. По сути, они не добираются, чтобы иметь их собственных предъявителей... По крайней мере, не укутался с самой реализацией управления. Вместо этого ими должен управлять косвенно предъявитель родительского окна через поля передачи, выставленные в интерфейсе представления. Короче говоря, пользовательский элемент управления выставляется предъявителю не его собственным интерфейсом, а скорее через общий интерфейс передачи, реализованный его родительским представлением. Назовите это "частичным интерфейсом представления".

Ваш предъявитель может затем содержать экземпляры допускающего повторное использование класса подпредъявителя, который работает только с этим частичным интерфейсом представления и соответствующими частями модели. Это позволит Вам стараться не переписывать код предъявителя для перевода из модели каждый раз, когда необходимо использовать управление, И это препятствует тому, чтобы представление окна должно было знать о модели, для передачи информации до предъявителя управления.

То, что это эффективно делает, это далее разделяет пользовательский элемент управления, как модуль, от Вашей модели данных. Это имеет смысл при размышлении о пользовательском элементе управления, в целом, как элемент реализации представления. Как допускающая повторное использование единица, это - часть функциональности представления, и никакая часть его не должна быть связана с Вашей моделью данных.

4
ответ дан 1 December 2019 в 23:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: