Я столкнулся с шаблоном проектирования, который был назван «Образцом обработчика», но я не могу найти никаких реальных ссылок на этот шаблон нигде. Это в основном просто интерфейс с одним методом, который позволяет вам легко расширять функциональность в фоновом режиме, не перекомпилируя клиентов. Может быть полезно для веб-службы, которая должна обрабатывать множество различных типов запросов. Вот пример:Картина "Handler"?
public interface IHandler
{
IDictionary<string, string> Handle(IDictionary<string, string> args);
}
В арг, как правило, включают в себя один ключ, как «Action» со значением, который говорит implmentation, что делать. Дополнительные аргументы могут быть переданы, чтобы дать им больше информации. Затем impl затем возвращает произвольный список аргументов, которые клиент должен «понять».
Является ли это анти-шаблоном или, возможно, еще одним шаблоном в маскировке? Рекомендуется ли этот тип дизайна?
EDIT: Немного больше информации: Как я видел это реализовано, «корневой» обработчик будет действовать как диспетчер для других конкретных обработчиков (может быть?). Корневой обработчик имеет «HandlerResolver», который решает, какой конкретный обработчик должен получить сообщение на основе его содержимого. Возможно, это на самом деле похоже на образец «диспетчера», хотя я не знаю, действительно ли это шаблон. Я предполагаю, что он также может иметь шаблон цепочки ответственности в корне, который позволяет вам объединить кучу конкретных обработчиков, а затем позволить им решить, какой из них будет обрабатывать.
Да, командная модель была моей первой догадкой о том, что это было. Я думаю, что команда типа использует нечто подобное этому внутренне с помощью метода «Выполнение». –