El Command Pattern en el Diseño de Producto
Pase de diseñar pantallas estáticas a diseñar flujos dinámicos basados en acciones encapsuladas mediante el Command Pattern, la base técnica de las interfaces modernas y colaborativas.
¿Por qué el Diseñador debe Conocer el Command Pattern?
Tradicionalmente, el diseño se centraba en el estado final de las pantallas (la foto fija). Sin embargo, los productos modernos (como Figma, Notion o Google Docs) se centran en las acciones que llevan de un estado a otro. El Command Pattern es el lenguaje técnico que permite que estas transiciones sean posibles.
Si diseñas un sistema que solo entiende “estados” (v1, v2, v3), nunca podrás implementar un Undo colaborativo de forma elegante. Si diseñas basado en “comandos” (Usuario A añadió texto, Usuario B cambió color), tienes un sistema de historial infinito y flexible.
Los 4 Pilares del Patrón de Comando
Para que una acción del usuario sea un “comando” válido en el sistema, debe contener el objeto y el método (la acción):
- Ejecución (Execute): Lo que ocurre cuando el usuario hace la acción (ej. mover un objeto 10px a la derecha).
- Reversión (Undo): Lo que ocurre cuando el usuario pulsa
Cmd/Ctrl + Z(ej. mover el objeto 10px a la izquierda). - Estado (State): Toda la información necesaria para que la acción se pueda repetir (ej. qué objeto se movió y qué distancia).
- Metadata: Quién hizo la acción, cuándo y en qué contexto (fundamental para la colaboración en tiempo real y la auditoría).
Ventajas para la Experiencia de Usuario
- Historial Infinito: Al guardar una lista de comandos ejecutados, el usuario puede retroceder tanto como quiera sin miedo a perder información.
- Detección y Resolución de Conflictos: Si dos usuarios intentan cambiar el mismo objeto al mismo tiempo, el sistema puede comparar sus comandos y resolver cuál debe prevalecer (usando técnicas como CRDT).
- Macros y Automatización: Si las acciones son objetos individuales, es fácil permitir que el usuario grabe una serie de acciones y las repita luego con un solo clic.
- Sincronización en Tiempo Real: En lugar de enviar toda la pantalla por internet cada vez que algo cambia, solo enviamos el “pequeño comando” (ej. “el usuario movió el slider a 50”). Esto hace que las apps sean increíblemente rápidas y eficientes.
El Command Pattern en Aplicaciones Modernas
- Figma: Cada vez que mueves un elemento o cambias un color, Figma crea un comando y lo envía al servidor para que el resto de tus compañeros lo vean al instante.
- Editores de Vídeo (Premiere, Final Cut): Sus complejos sistemas de Undo se basan enteramente en una pila de comandos inmensa.
- Bases de Datos (SQL): Las transacciones (Begin, Commit, Rollback) son una aplicación pura del Command Pattern para garantizar la integridad de los datos.
Consejos de Mentor
- Diseña para la acción, no solo el resultado: Al documentar tus flujos para los desarrolladores, no solo muestres el “antes” y el “después”. Explica qué constituye una “acción de comando” atómica en tu app.
- Agrupamiento Lógico (Batching): No todos los clics son un comando independiente. A veces, varias acciones pequeñas deben agruparse en un solo comando para que el Undo sea útil (ej. escribir una frase completa en lugar de cada letra).
- Involucra a Ingeniería: Si quieres diseñar un producto de nivel profesional con colaboración y gran performance, habla con tus desarrolladores sobre cómo están encapsulando las acciones del usuario.
Recursos y Herramientas
- Martin Fowler: Command Pattern Definition
- Refactoring Guru: Design Patterns - Command
- Figma Engineering: Building a Multiplayer Editor
- Libros: Design Patterns: Elements of Reusable Object-Oriented Software (El libro de “Gang of Four”).
mental-models-undo-redo crdt-para-disenadores resolucion-de-conflictos optimistic-updates-rollback