Duck Typing, tipizzazione per comportamenti

23 agosto 2010

Anche le sedie possono camminare

L’oggetto sedia non cammina, quindi non è conforme al behavior acts_as_walking; ma cosa succederebbe se invece alcune delle sue istanze lo fossero? Supponiamo di dover gestire un catalogo di sedie che comprenda anche alcuni stravaganti esperimenti di laboratorio come la ‘robot chair’, dotata di deambulazione autonoma; l’approccio duck-typing, non essendo basato sulla classe ma sul behavior, ci consente anche di gestire questi casi intervenendo direttamente sull’istanza interessata; proseguiamo in coda al listato precedente aggiungendo:

wooden_base = Chair.new("Continuous Arm Windsor Chair", 600)
massage     = Chair.new("Massage Chair" , 1500)
simple      = Chair.new("Simple Chair" , 30)
robot_chair = Chair.new("WL-16 Robot Chair" , 9999)

def robot_chair.walk
  @distance = @distance.to_f + 2
end

marathon(wooden_base,Man.new)
marathon(robot_chair,Man.new)

Eseguendo lo script noteremo come mentre la wooden chair non è adatta a camminare, e quindi nemmeno a competere in una maratona, la sedia robotica viene riconosciuta come aderente al behavior e quindi ammessa alla gara.

Questo risultato è ottenibile intervenendo come fatto sulla singola istanza in modo da renderla conforme alle specifiche del comportamento stabilito.

Conclusioni

Il duck typing mischia sapientemente caratteristiche molto potenti e lati oscuri; questa tecnica incarna una metodologia semplice, snella ed elegante per catturare le essenze degli oggetti di business e condividerle in modo orizzontale all’interno di un applicazione.

I benefici di questo approccio sono molti: ogni singola istanza in ogni momento ha i presupposti per essere perfettamente aderente ai compiti che deve onorare. D’altro canto tutta questa flessibilità porta con se un prezzo da pagare: ogni sviluppatore sul progetto deve essere a conoscenza del funzionamento di tutti i behaviors implementati, sia nel caso voglia aggiungerne qualcuno ai propri oggetti, sia per evitare che alcuni metodi sviluppati sovrascrivano comportamenti esistenti.

Se vuoi aggiornamenti su Duck Typing, tipizzazione per comportamenti inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Duck Typing, tipizzazione per comportamenti

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy