Ecco un rapido avvio per ottenere i ingranaggi che girano ...
parkinglot è una classe.
ParkingSpace è una classe.
ParkingSpace ha un'entrata.
L'ingresso ha una posizione o, più specificamente, la distanza dall'ingresso.
ParkingLotSign è una classe.
ParkingLot dispone di un ParcheggioLotSign.
ParkingLot dispone di un numero limitato di ParkingSpaces.
HandicappedParkingSpace è una sottoclasse di ParkingSpace.
RegularParkingSpace è una sottoclasse di ParkingSpace.
CompactParkingSpace è una sottoclasse di ParkingSpace.
ParkingLot mantiene una serie di ParkingSpaces e una serie separata di ParkingSpaces liberi in ordine di distanza dall'ingresso.
ParkingLotSign può essere detto per visualizzare "pieno", o "vuoto", o "vuoto/normale/parzialmente occupato" chiamando .Full(), .Empty() o .Normal()
Parker una classe.
Parker può parcheggiare().
Parker può Unpark().
Valor è una sottoclasse di Parker che può chiamare ParkingLot.FindVacantSpaceNearestEntrance(), che restituisce un ParkingSpace.
Parker dispone di un parcheggio.
Parker può chiamare ParkingSpace.Take() e ParkingSpace.Vacate().
Parker chiama Entrance.Entering() e Entrance.Exiting() e ParkingSpace notifica ParkingLot quando viene preso o lasciato in modo che ParkingLot possa determinare se è pieno o meno. Se è pieno o vuoto o non è pieno o vuoto, dovrebbe cambiare ParkingLotSign.Full() o ParkingLotSign.Empty() o ParkingLotSign.Normal().
HandicappedParker potrebbe essere una sottoclasse di Parker e CompactParker una sottoclasse di Parker e RegularParker una sottoclasse di Parker. (potrebbe essere eccessivo, in realtà.)
In questa soluzione, è possibile che Parker debba essere rinominato Car.
Ti sei fatto avanti ed esclamai "che cosa ha a che fare con i libri?" e si precipita fuori? –
Mi è stato chiesto da un ragazzo che è passato ad un'altra situazione. Quando ho usato un modello di Gang of Four quasi da manuale, ha detto "Almeno conosci il polimorfismo". Sono stato ringraziato per essere venuto e ho detto che me lo avrebbero fatto sapere. Non ero impressionato –
Non si tratta di un problema di gestione della memoria? –