State es un patrón de diseño de comportamiento que permite a un objeto cambiar de comportamiento cuando cambia su estado interno.
El patrón extrae comportamientos relacionados con el estado, los coloca dentro de clases de estado separadas y fuerza al objeto original a delegar el trabajo de una instancia de esas clases, en lugar de actuar por su cuenta.
Ejemplos de uso: El patrón State se utiliza ocasionalmente en PHP para convertir grandes y voluminosas máquinas de estados basadas en operadores switch, en objetos.
Identificación: El patrón State se puede reconocer por métodos que cambian su comportamiento dependiendo del estado del objeto, controlado externamente.
Ejemplo conceptual
Este ejemplo ilustra la estructura del patrón de diseño State y se centra en las siguientes preguntas:
¿De qué clases se compone?
¿Qué papeles juegan esas clases?
¿De qué forma se relacionan los elementos del patrón?
Después de conocer la estructura del patrón, será más fácil comprender el siguiente ejemplo basado en un caso de uso real en PHP.
index.php: Ejemplo conceptual
Output.txt: Resultado de la ejecución
Ejemplo del mundo real
Aunque los conceptos de las máquinas de estado y del propio patrón State son muy populares entre los desarrolladores, no se me ocurre ningún ejemplo decente en el mundo real de este patrón en una aplicación PHP real.
No obstante, si has utilizado el patrón en tu proyecto previamente, no dudes en compartir tu experiencia en el foro o por correo electrónico, en support@refactoring.guru. ¡Gracias!