Вопрос

Скажем, у вас есть несколько триад MVP в вашем приложении (приложение WinForms .NET 2.0) и каждая триада заботится о одной области ответственности. Какой ваш предпочтительный способ координации связи между Triads MVP?

Опция 1 Объект координатора, который «имеет» каждую модель и присматривает за координацией путем подписки на необходимые события в каждом, а затем решить, какие способы позвонить в какие сценарии.

Беспокойство, что это может быть класс «Бога».

Вариант 2 Ведущий «имеет» другой ведущий и, когда в модели случаются еще что-то интересное, ведущий использует другой ведущий для перемещения связи.

Беспокойство, что докладчики не должны иметь публичный интерфейс (презентатор-первый подход), и это сломается.

Мне просто интересно, что другие люди сделали, чтобы решить эту проблему в масштабируемой моде OO. Что если я добавим другую MVP триаду? Как тяжело это будет соответствовать этому в мой координатор? Должны быть несколько хороших примеров того, как управлять несколькими MVP Triads в приложении WinForms?

Это было полезно?

Решение

Не быть расплывчатым ... Но это зависит. Два подхода, которые я использовал в прошлом:

  1. Использовать АН Агрегатор событий Узор, и у людей отдельных презентасеров огонь с событиями, что другие докладчики могут обрабатывать. например, undera делает: events.Raise<MyEvent> () и russerb реализует: IHandler<MyEvent> и реагирует соответственно в его public void Handle (MyEvent @event) метод.
  2. Используйте общую модель, которая вводится в ведущих, которые необходимо координировать. Например, если один ведущий обрабатывает выбор данного FO, и другой докладчик должен обновлять панель данных с деталями FOO, я мог бы использовать модель состояния IFOOSELection и ввести, что в обоих докладчиках, которые должны координировать концепцию «текущего выбора» '.

Интерфейс:

public interface IFooSelection {
    public event EventHandler Changed;
    Foo Selected { get; set; }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top