Используйте классы модели или свойства сеттера с MVP - PullRequest
1 голос
/ 22 апреля 2011

Я создаю свое приложение, используя свойства сеттера, например

public interface IUserRegistrationView
{
    string DisplayName { set; }
    string EmailAddress { set; }
}

Но я не уверен, что это хороший способ сделать ...

Может быть, мне следует создатьсвойство Model в классе Presenter?

Что вы предлагаете?

спасибо!

Ответы [ 2 ]

2 голосов
/ 23 апреля 2011

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

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

Второй , я бы изменил свойства сеттера на SetDisplayName и SetEmailAddress методы, но только если презентатор может обновлять представление после показа, а не только отображения статические данные. В противном случае я бы удалил их полностью. Помните, что вероятно YAGNI .

Третий , мой основной способ передачи начальных данных для отображения в представлении был бы таким, используя метод представления Show:

public class UserRegistrationInfo
{
    string DisplayName { get; set; }
    string EmailAddress { get; set; }
}

public interface IUserRegistrationView
{
    void SetDisplayName(string name);
    void SetEmailAddress(string name);

    // ... events for the presenter to hook into.

    void Show(UserRegistrationInfo info);
}
0 голосов
/ 22 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...