В поисках лучшего дизайна winforms - PullRequest
0 голосов
/ 29 августа 2009

Это относится к этому вопросу . Предложенные ответы включают в себя добавление к «Form1» свойства типа «Form2», которое отвечает на заданный вопрос. Но что, если бы мы хотели менее связанное решение? Каковы ваши предложения?

1 Ответ

1 голос
/ 29 августа 2009

Получатель, который вы получили, был настолько сплоченным, потому что вы не предоставили много информации о вашем текущем дизайне и назвали материал form1 и form2.

Чтобы получить менее спаренный дизайн, вы можете выполнить одно из следующих действий:

Простое решение Добавьте событие в form2, которое срабатывает при возникновении X (X означает, что значок уведомления должен измениться). Затем вы можете подключить обработчик событий в том месте, где у вас есть ссылка на уведомления и форму2. Таким образом, form2 не должен знать о form1. Таким образом, связь происходит с form1 -> form2 (что и есть, потому что form1 создает экземпляр form2) вместо form1 <---> form2

Усовершенствованное решение, которое охватывает гораздо больше, чем просто проблему уведомлений, но архитектуру всего приложения Другое решение заключается в использовании чистого шаблона проектирования пользовательского интерфейса, такого как Model View Controller, Model View Present или View View Model. Уведомление, вероятно, касается не самой формы, а какой-то коммерческой организации. Так что это, вероятно, должно раскрыть это, а не формы самих себя (которые отвечают только за то, чтобы фактически что-то отобразить). Если бы вы абстрагировали понятие уведомления от форм и в какую-то модель, вы могли бы даже добавить больше развязки, используя что-то вроде Inversion of Control (IoC) с контейнером IoC, например structuremap или ninject и интерфейс INotificationManager, для которого конкретный тип может быть введен при построении класса модели во время выполнения.

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