La domanda è rilevante solo per i linguaggi di programmazione tipizzati, le soluzioni dinamiche non sono soddisfacenti. Supponiamo che il linguaggio sia C ++.
Architettura di esempio:
- DisplayObject (base class)
-- Container (derived from DisplayObject)
-- Sprite (derived from DisplayObject)
Quindi ho un motore di gioco tra le mani e ha solo le coordinate X e Y. Diciamo che voglio aggiungere una coordinata Z. Per fare questo, dovrei modificare la classe base DisplayObject
. Perché se ne derivassi semplicemente per aggiungere la funzionalità dell'asse Z, renderebbe impossibile utilizzare le classi Container
e Sprite
nel mio codice senza inviarle al mio nuovo DisplayObject
.
La domanda è, come risolverlo senza usare il casting?
Esistono dozzine di classi derivate da DisplayObject
, quindi modificarle tutte una ad una apparirebbero molto strane.
Mi è stata suggerita anche la delega, ma non vedo come applicarla qui.