Обычно я работаю так, что представление зависит от докладчика, а докладчик - от модели. Это означает, что одна и та же модель может использоваться несколькими докладчиками, а один и тот же докладчик может использоваться для нескольких представлений (различные макеты пользовательского интерфейса или Winforms против Web и т. Д.). Чтобы облегчить это, представление вызывает открытые методы для докладчика и прослушивает события от докладчика, чтобы сообщить, когда изменились данные.
В качестве примера того, почему вы можете захотеть работать таким образом, представьте интерфейс, который имеет два представления, одно для начинающего пользователя и одно для эксперта, причем представление для начинающего показывает подмножество экспертных команд. Если один и тот же презентатор используется для обоих этих представлений, тогда представителю-новичку необходимо будет предоставить события для всех команд экспертов, поскольку они нужны присутствующему, чтобы он мог связываться с ними - даже если они никогда не сработают. С другой стороны, докладчик может предоставлять методы для всех параметров эксперта, и представление для начинающих просто никогда не вызывает их, это означает, что ни представление, ни представитель не реализуют неиспользуемые функциональные возможности.