El método singleton_method
crea una clase
para el objeto que hace la invocación
- si no fué creada anteriormente -
y hace que esta nueva clase herede de
la clase del objeto.
El algoritmo garantiza que objetos distintos tendrán clases
distintas.
lhp@nereida:~/Lperl/src/advanced_perl_programming2$ sed -ne '9,23p' `perldoc -l Class::SingletonMethod` | cat -n 1 package UNIVERSAL; 2 3 no warnings; no strict; # no guarantee 4 5 sub singleton_method { 6 my ($object, $method, $subref) = @_; 7 8 my $parent_class = ref $object; 9 my $new_class = "_Singletons::".(0+$object); 10 *{$new_class."::".$method} = $subref; 11 if ($new_class ne $parent_class) { 12 @{$new_class."::ISA"} = ($parent_class); 13 bless $object, $new_class; 14 } 15 }
Casiano Rodríguez León