Re: Практическая задачка для профи по архитектуре
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 26.07.07 09:11
Оценка:
Здравствуйте, Gangsta, Вы писали:

G>Вот такая задачка. Только не говорите, что функционал лишний. Хотелось бы комментариев по поводу того, как сделать то, что описано выше (а не комментариев в стиле "мне кажется, что ты заморачиваешься, достаточно одной проверки" или "все люди делают по-другому").


С учетом поста
Автор: GlebZ
Дата: 19.07.07
Глеба рекомендую Вам поступить так:

1. Составить полный перечень операций (на макроуровне), которые должна выполнить система в ответ на действие пользователя по добавлению комментария.

По всей видимости, получится что-то типа этого:

1) Получить комментарий и контекст пользователя.
2) Запросить и получить капчу.
3) Поместить комментарий в базу данных.
4) Вывести сообщение (о том, что комментарий добавлен или, наоборот, не добавлен).

2. Для каждого из этих действий создать по модулю (классу), который действует автономно. У Вас получатся:


Обратите внимание, что это только первичные абстракции. По ходу анализа они могут изменяться и уточняться.

3. Организовать обработку сообщения от пользователя в виде конвеера — когда каждое полученное сообщение проходит последовательно все эти четыре этапа.

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

Понятно, что коммуникация между этими модулями производится на асинхронной основе.
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.