La Idea de los Métodos Singleton

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
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19