В шаблоне «Представление модели представления» может ли выступающий принимать и использовать два различных интерфейса представления одновременно? - PullRequest
2 голосов
/ 04 февраля 2009

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

Скажем, у меня есть просмотр загрузки и управление

public partial class UploadControlView : System.Web.UI.UserControl, IUploadView

но у меня также есть просмотр страницы

public partial class ExcelProcessorView : System.Web.UI.Page, IExcelProcessorView

Элемент управления загрузкой будет находиться на странице ExcelProcessor, чтобы пользователь мог загрузить файл, который передается некоторой бизнес-логике обработки Excel.

Итак, у меня есть ведущий,

public class ExcelUploadAndProcessPresenter : IUploadPresenter

В ExcelProcessorView я бы подключил докладчик следующим образом:

protected void Page_Load(object sender, EventArgs e) 
    {
        ExcelUploadAndProcessorPresenter presenter = 
            new ExcelUploadAndProcessorPresenter(this, uploadControl);
        this.AttachPresenter(presenter);
        uploadControl.AttachPresenter(presenter);
        //init etc...
    }

Это правильное использование шаблона MVP?

Я пытаюсь выяснить, каков наилучший способ обработки множества представлений для одного докладчика. Может ли MVP таким образом иметь отношения один ко многим. В качестве альтернативного вопроса я также хотел бы знать, может ли шаблон MVP / должен ли обрабатывать ситуацию, когда у вас много докладчиков и много просмотров (или у вас должен быть только один докладчик)?

Если вы видите какие-либо проблемы с моей интерпретацией MVP в общем, непременно идите и укажите на это.

Спасибо за чтение!

1 Ответ

2 голосов
/ 04 февраля 2009

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

Однако нет никакой причины, по которой один докладчик не может обрабатывать несколько представлений / элементов управления, хотя я бы повторно использовал докладчик только для нескольких представлений, отображающих одну и ту же модель (например, экраны CRUD). Если в одном представлении размещается другое от одного и того же докладчика, я не могу вспомнить причину, по которой вы не должны повторно использовать докладчика (например, создать экран в нижней части экрана списка).

...