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