Но, вообще, вопрос по паттернам так же открыт, возможно, какой-то из существующих мне подходит. (да, я читал сам про паттерны, но малый опыт не позволил мне найти что-то под задачу).
> в момент установки параметра, проверять его ошибки
Вот именно это я и реализовал отдельным классом. Не тыкать в каждый сеттер проверщики, а сделать какую-то единую систему проверки на ошибки. А если один параметр "б" зависит от параметра "а" и потом система изменится так, что параметра "а" будет проверяться как-то иначе, то нужно будет искать все сеттеры, которые содержат в себе ифы с этим параметром "б".
Ну и конкретно по статусам в примере - это абстрактный пример. В реальной задаче у меня есть параметры таблицы (без рамок, без отступов, автоподбор ширины ячейки, растягивание на всю ширину страницы). Можно заметить, что последние два параметра конфликтуют друг с другом. Именно эту ситуацию я воспроизвёл на примере )
Максим Ворожцов, по-моему, типичный MVC: участники чата - подписчики на событие, их можно быть любое количество, в то же время все они имеют возможность в него писать, каждое сообщение - событие.
Подозреваю, Message должен иметь ещё и получателя (чат, а не пользователь), а Dialog и UserDialog не нужны, если имеется в виду диалог двух людей, лучше что-то общее - Беседа или Чат, которые могут содержать любое количество отправителей и получателей. Соответственно, сообщение отправляется в чат, а оттуда по пользователям распределяется.
Андрей Саныч, там практические упражнения пошагово с IDE и сообществом ) Несравнимые вещи. Но, конечно, Елисеев крут и у него тоже есть что почерпнуть.
4 разработчика решили ставить гит,
Один сказал "я в рот е...л" и их осталось три.
Трое разработчиков трудились над гитом,
Потом один ушёл курить, оставив их вдвоём.
Один из двух разрабов был просто сисадмин,
Поэтому остался из четверых один.
Последний разработчик вдруг понял - дело встало,
Оставил гит на завтра и никого не стало.