Middle — Middle+
¿Puede explicar la implementación interna del patrón State y cómo gestiona el estado del objeto?
sobes.tech AI
Respuesta de la IA
El patrón State permite que un objeto cambie su comportamiento dependiendo de su estado interno, cambiando la clase de estado durante la ejecución.
La implementación interna generalmente se basa en los siguientes principios:
- Existe un contexto (Context) que contiene una referencia al objeto de estado actual (State).
- La interfaz State define un conjunto de métodos que implementan diferentes estados.
- Cada estado concreto implementa esta interfaz y define el comportamiento para ese estado.
- El contexto delega las llamadas a los métodos al estado actual.
- Cuando es necesario, el estado puede cambiarse a sí mismo, modificando la referencia en el contexto a otro objeto de estado.
Ejemplo en Swift (iOS):
protocol State {
func handle(context: Context)
}
class Context {
private var state: State
init(state: State) {
self.state = state
}
func request() {
state.handle(context: self)
}
func changeState(to newState: State) {
self.state = newState
}
}
class ConcreteStateA: State {
func handle(context: Context) {
print("Estado A manejando la solicitud")
context.changeState(to: ConcreteStateB())
}
}
class ConcreteStateB: State {
func handle(context: Context) {
print("Estado B manejando la solicitud")
context.changeState(to: ConcreteStateA())
}
}
// Uso:
let context = Context(state: ConcreteStateA())
context.request() // Estado A manejando la solicitud
context.request() // Estado B manejando la solicitud
De esta manera, el objeto cambia su comportamiento dinámicamente, simplemente alternando su estado interno.