Proporcionaré un argumento a favor de las acciones "tontas".
Al asignar la responsabilidad de recopilar datos de vistas en sus Acciones, las une a los requisitos de datos de sus vistas.
Por el contrario, las Acciones genéricas, que describen de manera declarativa la intención del usuario, o alguna transición de estado en su aplicación, permiten que cualquier Tienda que responda a esa Acción transforme la intención, en un estado diseñado específicamente para las vistas suscritas.
Esto se presta a tiendas más numerosas, pero más pequeñas y más especializadas. Defiendo este estilo porque
- esto le da más flexibilidad en cómo las vistas consumen los datos de la Tienda
- Las tiendas "inteligentes", especializadas para las vistas que las consumen, serán más pequeñas y menos acopladas para aplicaciones complejas que las acciones "inteligentes", de las cuales dependen potencialmente muchas vistas.
El propósito de una tienda es proporcionar datos a las vistas. El nombre "Acción" me sugiere que su propósito es describir un cambio en mi Aplicación.
Suponga que tiene que agregar un widget a una vista de Panel existente, que muestra algunos datos agregados nuevos y sofisticados que su equipo de back-end acaba de implementar.
Con las acciones "inteligentes", es posible que deba cambiar su acción "Actualizar panel" para consumir la nueva API. Sin embargo, "Actualizar el tablero" en sentido abstracto no ha cambiado. Los requisitos de datos de sus vistas es lo que ha cambiado.
Con las acciones "tontas", puede agregar una nueva Tienda para que el nuevo widget la consuma y configurarla de modo que cuando reciba el tipo de Acción "actualizar panel", envíe una solicitud de los nuevos datos y la exponga a el nuevo widget una vez que esté listo. Tiene sentido para mí que cuando la capa de vista necesita más o diferentes datos, las cosas que cambio son las fuentes de esos datos: las tiendas.