view Lib/IMPL/Object/Singleton.pm @ 194:4d0e1962161c

Replaced tabs with spaces IMPL::Web::View - fixed document model, new features (control classes, document constructor parameters)
author cin
date Tue, 10 Apr 2012 20:08:29 +0400
parents d1676be8afcc
children 0f59b2de72af
line wrap: on
line source

package IMPL::Object::Singleton;
use strict;
use warnings;

my %instances;

sub CTOR {
    die new IMPL::InvalidOperationException("Only one instance of the singleton can be created",ref $_[0], $instances{ref $_[0]}) if $instances{ref $_[0]};
    $instances{ref $_[0]} = $_[0];
}

sub instance {
    $instances{$_[0]}
}

1;

__END__

=pod

=head1 SYNOPSIS

=begin code

package Foo;

use parent qw(IMPL::Object IMPL::Object::Singleton);

#....

Foo->isnatnce->some_work();

Foo->isnatnce->get_result();

=end code

=head1 DESCRIPTION

Реализует шаблон Singleton

=head1 MEMBERS

=head2 OPERATORS

=list

=item C<instance CLASS(@params)>

Создает или возвращает экземпляр класса, если экземляр не существует, то он создается с параметрами C<@params>.

=over

=cut