45
|
1 package IMPL::Object::Singleton;
|
|
2 use strict;
|
|
3 use warnings;
|
|
4
|
|
5 my %instances;
|
|
6
|
|
7 sub instance {
|
|
8 my $self = shift;
|
|
9
|
|
10 $instances{$self} || ($instances{$self} = $self->new(@_));
|
|
11 }
|
|
12
|
46
|
13 1;
|
45
|
14
|
46
|
15 __END__
|
|
16
|
|
17 =pod
|
|
18
|
|
19 =head1 SYNOPSIS
|
|
20
|
|
21 package Foo;
|
|
22
|
|
23 use base qw(IMPL::Object IMPL::Object::Singleton);
|
|
24
|
|
25 #....
|
|
26
|
|
27 Foo->isnatnce->some_work();
|
|
28
|
|
29 Foo->isnatnce->get_result();
|
|
30
|
|
31 =head1 DESCRIPTION
|
|
32
|
|
33 Реализует шаблон Singleton
|
|
34
|
|
35 =head1 MEMBERS
|
|
36
|
|
37 =head2 OPERATORS
|
|
38
|
|
39 =list
|
|
40
|
|
41 =item C<instance CLASS(@params)>
|
|
42
|
|
43 Создает или возвращает экземпляр класса, если экземляр не существует, то он создается с параметрами C<@params>.
|
|
44
|
|
45 =over
|
|
46
|
|
47 =cut |