Mercurial > pub > Impl
comparison Lib/IMPL/Object/Singleton.pm @ 312:75a78cbf7dcf
View refactoring: INIT blocks are deprecated
author | cin |
---|---|
date | Mon, 29 Apr 2013 01:10:42 +0400 |
parents | 0f59b2de72af |
children |
comparison
equal
deleted
inserted
replaced
311:d3b5a67ad2e8 | 312:75a78cbf7dcf |
---|---|
7 IMPL::Class::Meta | 7 IMPL::Class::Meta |
8 ); | 8 ); |
9 | 9 |
10 __PACKAGE__->static_accessor_own(_instance => undef); | 10 __PACKAGE__->static_accessor_own(_instance => undef); |
11 | 11 |
12 my %instances; | 12 sub InitInstance { |
13 | 13 my $self = shift; |
14 sub CTOR { | 14 die IMPL::InvalidOperationException->new("Only one instance of the singleton can be created", $self) |
15 die IMPL::InvalidOperationException->new("Only one instance of the singleton can be created",ref $_[0]) | 15 if $self->_instance; |
16 if $_[0]->_instance; | 16 |
17 $self->_instance($self->new(@_)); | |
17 } | 18 } |
18 | 19 |
19 sub instance { | 20 sub instance { |
20 my $this = shift; | 21 my $this = shift; |
21 return $this->_instance || $this->_instance($this->Activate()); | 22 return $this->_instance || $this->_instance($this->Activate()); |