"use strict"; class SafeDepositBoxState { render() { /* Abstract */ } } class CombinationLock { constructor(combination) { this.combination = combination; this.reset(); this.initialPassword = "12345"; } reset() { // Estado inicial: LOCKED } enterDigit(digit) { // Cambia el estado a partir de la contraseña } } /* En la caja fuerte hay 3 estados * LOCKED: Que la caja ha sido bloqueada, (O estado inicial) * OPEN: La caja fuerte está abierta y el usuario ha digitado el la clave correcta. Después se cerrará la caja fuerte * ERROR: La secuencia es incorrecta, entra en estado error. Y volverá al estado inicial. */ let cajaFuerte = new CombinationLock(); cajaFuerte.enterDigit("123"); /* La caja fuerte ha sido bloqueada. Ingresa la contraseña... Has intentado introducir una secuencia de dígitos incorrecta. La caja fuerte ha sido bloqueada. Ingresa la contraseña... */ cajaFuerte.enterDigit("12345"); /* La caja fuerte ha sido abierta. La caja fuerte se cerrará en 10segundos... La caja fuerte ha sido bloqueada. Ingresa la contraseña... */