Mercurial > pub > Impl
comparison Lib/IMPL/Object/Singleton.pm @ 143:d9dd3500ead3
Singleton behavior changed
author | wizard |
---|---|
date | Thu, 08 Jul 2010 23:46:49 +0400 |
parents | 0d2337e203c0 |
children | b56ebc31bf18 |
comparison
equal
deleted
inserted
replaced
142:4c9849f0f879 | 143:d9dd3500ead3 |
---|---|
2 use strict; | 2 use strict; |
3 use warnings; | 3 use warnings; |
4 | 4 |
5 my %instances; | 5 my %instances; |
6 | 6 |
7 sub CTOR { | |
8 die new IMPL::InvalidOperationException("Only one instance of the singleton can be created",ref $_[0], $instances{ref $_[0]}) if $instances{ref $_[0]}; | |
9 $instances{ref $_[0]} = $_[0]; | |
10 } | |
11 | |
7 sub instance { | 12 sub instance { |
8 my $self = shift; | 13 my $self = shift; |
9 | 14 |
10 $instances{$self} || ($instances{$self} = $self->new(@_)); | 15 $instances{$_[0]}; |
11 } | 16 } |
12 | 17 |
13 1; | 18 1; |
14 | 19 |
15 __END__ | 20 __END__ |