Me he topado con un patrón de diseño que se conoce como "Patrón de controlador", pero no puedo encontrar ninguna referencia real a este patrón en ninguna parte. Básicamente es solo una interfaz de un solo método que le permite ampliar fácilmente la funcionalidad en el back-end sin hacer que los clientes vuelvan a compilar. Podría ser útil para un servicio web que tiene que manejar muchos tipos diferentes de solicitudes. He aquí un ejemplo:patrón de "controlador"?
public interface IHandler
{
IDictionary<string, string> Handle(IDictionary<string, string> args);
}
Los argumentos incluirían típicamente una clave como "acción" con un valor que indica al implmentation qué hacer. Se pueden pasar args adicionales para dar a la impl más información. El impl luego devuelve una lista arbitraria de argumentos que el cliente "debería" entender.
¿Es este un patrón anti, o tal vez otro patrón disfrazado? ¿Se recomienda este tipo de diseño?
EDIT: Un poco más de información: La forma en que he visto esto implementado, el controlador "raíz" actuaría como un despachador a otros controladores concretos (¿tal vez?). El controlador de raíz tiene un "HandlerResolver", que decide qué manejador concreto debe obtener el mensaje en función de su contenido. Tal vez es realmente como un patrón de "despachador", aunque no sé si eso es realmente un patrón. Supongo que también podría tener un patrón de cadena de responsabilidad en la raíz, que le permite encadenar a un grupo de manipuladores de concreto, y luego dejarlos decidir cuál manejará.
Sí, el patrón de comando fue mi primera suposición para qué era esto. Creo que Command utiliza algo similar a esto internamente con el método "Execute". –