Как применить SRP к классам пользовательского интерфейса? - PullRequest
3 голосов
/ 18 января 2011

Мое приложение использует DI-фреймворк и следует практике "интерфейс к интерфейсу", где это необходимо.

Я использую инъекцию в конструктор, так как я хотел бы видеть зависимости в явном виде. Но теперь конструкторы классов моей формы принимают слишком много параметров (> = 4, например).

Вопрос : Поскольку дизайн пользовательского интерфейса обычно не соответствует SRP, класс Winform может иметь n зависимости конструктора. Вам нравится оставлять их как есть, вместо этого передавать объект прокси, использовать локатор службы ...? Также вводите ли вы «аспекты» (logger и т. Д.) В каждый конструктор, учитывая, что aop-framework не используется?

1 Ответ

4 голосов
/ 18 января 2011

Нет причин, по которым реализации пользовательского интерфейса не должны придерживаться SRP.Используя такие шаблоны, как MVP, MVC или MVVM, класс пользовательского интерфейса ' единственная ответственность заключается в том, чтобы отображать и собирать данные через пользовательский интерфейс.Это часто лучше всего сделать с помощью довольно пассивных структур данных, таких как модели представления.

Проблема с чрезмерным внедрением конструктора должна быть решена путем рефакторинга в Aggregate Services .

Аспекты лучше всего решать с помощью применения шаблона проектирования Decorator .

...