MVP, WinForms - Как избежать раздутого вида, ведущей и представления модели
-
05-10-2019 - |
Вопрос
При внедрении шаблона MVP в WinForms я часто нахожу раздутые интерфейсы просмотра с слишком многими свойствами, больными и получателями. Простой пример с возможностью быть представлением с 3 кнопками и 7 текстовыми коробками, все имеющие значение, включенные и видимые свойства, выставленные с вида. Добавление результатов проверки для этого, и вы можете легко в конечном итоге с интерфейсом с 40-динамическими свойствами. Используя модель презентации, будет модель с таким же количеством недвижимости Aswell.
Как вы легко синхронизируете представление и модель презентации без раздутой логики докладчика, которые проходят все значения взад и вперед? (С помощью этой 80-килоговой линии ведущего представителя представьте с презерующим тестом, который издевается с моделью и представлением. (Возможно, вы захотите использовать различные виды, чем вид WinForms. Согласно некоторым, эта синхронизация должна быть работой докладчиков.) Вы бы использовали Automapper?
Может быть, я задаю неправильные вопросы, но мне кажется, что MVP легко раздувается без какого-то хорошего решения здесь ..
Нет правильного решения
Другие советы
Это только одна идея, и я знаю, где некоторые люди могут не понравиться, - здесь много разных вещей, которые вы можете сделать здесь.
Если вы обнаружите, что используете много кода Boverplate, инкапсулируйте его.
public class UiField<ContentType>
{
public bool IsEnabled { get; set; }
public ContentType Value { get; set; }
public bool IsVisible { get; set; }
}
По вашему мнению, то:
public interface ISampleView
{
UiField<bool> IsStaffFullTime { get; set; }
UiField<string> StaffName { get; set; }
UiField<string> JobTitle { get; set; }
UiField<int> StaffAge { get; set; }
UiField<IList<string>> Certifications { get; set; }
}
Здесь вы завершаете различные свойства, связанные с каждым полем.
Кстати, я предлагаю вам не заглушать эти интерфейсы вручную для тестирования - используйте насмешку издевательства.