El ejemplo que sigue ilustra la idea de usar singletons.
Aunque los objetos $a
y $b
pertenecen a la misma
clase, sólo el objeto $a
dispone del método dump
.
Para crear un método singleton usamos el método singleton_method
.
Puesto que queremos que todo objeto pueda crear sus métodos
singleton debemos ubicar singleton_method
en la clase
UNIVERSAL
.
hp@nereida:~/Lperl/src/advanced_perl_programming2$ cat -n singleton.pl 1 #!/usr/local/bin/perl -w 2 use strict; 3 use Class::SingletonMethod; 4 5 my $a = Some::Class->new(yuyu => 4, chuf => [ 1..5]); 6 my $b = Some::Class->new(yuyu => 8, chuf => [0..9]); 7 8 $a->singleton_method( dump => sub { 9 my $self = shift; 10 require Data::Dumper; 11 no warnings; 12 $Data::Dumper::Indent = 0; 13 print STDERR Data::Dumper::Dumper($self)."\n" 14 }); 15 16 $a->dump; # Prints a representation of the object. 17 $b->dump; # Can't locate method "dump" 18 19 package Some::Class; 20 21 sub new { 22 my $class = shift; 23 24 bless { @_ }, $class; 25 }
Casiano Rodríguez León