Aquí es una guía de inicio rápido para obtener los engranajes girando ...
ParkingLot es una clase.
ParkingSpace es una clase.
ParkingSpace tiene una entrada.
Entrance tiene una ubicación o más específicamente, la distancia de Entrance.
ParkingLotSign es una clase.
ParkingLot tiene un ParkingLotSign.
ParkingLot tiene un número finito de ParkingSpaces.
HandicappedParkingSpace es una subclase de ParkingSpace.
RegularParkingSpace es una subclase de ParkingSpace.
CompactParkingSpace es una subclase de ParkingSpace.
ParkingLot guarda un conjunto de espacios de estacionamiento, y una variedad separada de espacios de estacionamiento vacantes en orden de distancia desde su entrada.
ParkingLotSign se puede contar para mostrar "completa", o "vacío", o "blanco/normales/parcialmente ocupado" llamando, Full(), .Empty() o .Normal()
Parker es una clase.
Parker can Park().
Parker puede Unpark().
Valet es una subclase de Parker que puede llamar a ParkingLot.FindVacantSpaceNearestEntrance(), que devuelve un ParkingSpace.
Parker tiene un ParkingSpace.
Parker puede llamar a ParkingSpace.Take() y ParkingSpace.Vacate().
Parker llama a Entrance.Entering() y Entrance.Exiting() y ParkingSpace notifica a ParkingLot cuando se toma o se desocupa para que ParkingLot pueda determinar si está lleno o no. Si está recién lleno o recientemente vacío o no está lleno o vacío recientemente, debería cambiar el ParkingLotSign.Full() o ParkingLotSign.Empty() o ParkingLotSign.Normal().
HandicappedParker podría ser una subclase de Parker y CompactParker, una subclase de Parker y RegularParker, una subclase de Parker. (podría ser una exageración, de hecho.)
En esta solución, es posible que se cambie el nombre de Parker a Automóvil.
¿Saltaste y exclamas "¿qué tiene esto que ver con los libros?" y salir de la tormenta? –
Me lo preguntó un tipo que pasó a otra situación. Cuando utilicé un patrón de Gang of Four casi textual, dijo "Al menos conoces el polimorfismo". Luego me dieron las gracias por venir y me dijeron que me avisarían. No estaba impresionado. –
¿No es este problema de gestión de memoria? –