=head1 SYNOPSIS
use Class::Singleton;
my $one = Class::Singleton->instance(); # returns a new instance
my $two = Class::Singleton->instance(); # returns same instance
=head1 DESCRIPTION
This is the C<Class::Singleton> module. A Singleton describes an object class
that can have only one instance in any system. An example of a Singleton
might be a print spooler or system registry. This module implements a
Singleton class from which other classes can be derived. By itself, the
C<Class::Singleton> module does very little other than manage the instantiation
of a single object. In deriving a class from C<Class::Singleton>, your module
will inherit the Singleton instantiation method and can implement whatever
specific functionality is required.
For a description and discussion of the Singleton class, see
"Design Patterns", Gamma et al, Addison-Wesley, 1995, ISBN 0-201-63361-2.
=head1 PREREQUISITES
C<Class::Singleton> requires Perl version 5.004 or later. If you have an older
version of Perl, please upgrade to latest version, available from your nearest
CPAN site (see L<INSTALLATION> below).
=head1 INSTALLATION
The C<Class::Singleton> module is available from CPAN. As the 'perlmod' man
page explains:
CPAN stands for the Comprehensive Perl Archive Network.
This is a globally replicated collection of all known Perl
materials, including hundreds of unbunded modules.
[...]
For an up-to-date listing of CPAN sites, see
http://www.perl.com/perl/ or ftp://ftp.perl.com/perl/ .
The module is available in the following directories:
/modules/by-module/Class/Class-Singleton-<version>.tar.gz
/authors/id/ABW/Class-Singleton-<version>.tar.gz
C<Class::Singleton> is distributed as a single gzipped tar archive file:
Class-Singleton-<version>.tar.gz
Note that "<version>" represents the current version number, of the
form "C<1.23>". See L<VERSION> below to determine the current version
number for C<Class::Singleton>.
Unpack the archive to create an installation directory:
gunzip Class-Singleton-<version>.tar.gz
tar xvf Class-Singleton-<version>.tar
'cd' into that directory, make, test and install the module:
cd Class-Singleton-<version>
perl Makefile.PL
make
make test
make install
The 'C<make install>' will install the module on your system. You may need
root access to perform this task. If you install the module in a local
directory (for example, by executing "C<perl Makefile.PL LIB=~/lib>" in the
above - see C<perldoc MakeMaker> for full details), you will need to ensure
that the C<PERL5LIB> environment variable is set to include the location, or
add a line to your scripts explicitly naming the library location:
use lib '/local/path/to/lib';
=head1 USING THE CLASS::SINGLETON MODULE
To import and use the C<Class::Singleton> module the following line should
appear in your Perl program:
use Class::Singleton;
The L<instance()> method is used to create a new C<Class::Singleton> instance,
or return a reference to an existing instance. Using this method, it is only
possible to have a single instance of the class in any system.
my $highlander = Class::Singleton->instance();
Assuming that no C<Class::Singleton> object currently exists, this first call
to L<instance()> will create a new C<Class::Singleton> and return a reference
to it. Future invocations of L<instance()> will return the same reference.
my $macleod = Class::Singleton->instance();
In the above example, both C<$highlander> and C<$macleod> contain the same
reference to a C<Class::Singleton> instance. There can be only one.
=head1 DERIVING SINGLETON CLASSES
=2= |