Mercurial > pub > Impl
comparison Lib/IMPL/Object/Factory.pm @ 180:d1676be8afcc
Перекодировка в utf-8
author | sourcer |
---|---|
date | Fri, 30 Dec 2011 23:40:00 +0300 |
parents | 4267a2ac3d46 |
children | 47dac58691ee |
comparison
equal
deleted
inserted
replaced
179:b3d91ff7aea9 | 180:d1676be8afcc |
---|---|
93 $user = $factory->new(name => 'root'); # will create object MyApp::User | 93 $user = $factory->new(name => 'root'); # will create object MyApp::User |
94 # and pass paremeters (isAdmin => 1, name => 'root') | 94 # and pass paremeters (isAdmin => 1, name => 'root') |
95 | 95 |
96 =end code | 96 =end code |
97 | 97 |
98 XML. | 98 Или сериализованная форма в XML. |
99 | 99 |
100 =begin code xml | 100 =begin code xml |
101 | 101 |
102 <factory type="IMPL::Object::Factory"> | 102 <factory type="IMPL::Object::Factory"> |
103 <factory>MyApp::User</factory>, | 103 <factory>MyApp::User</factory>, |
110 | 110 |
111 =head1 DESCRIPTION | 111 =head1 DESCRIPTION |
112 | 112 |
113 C<[Serializable]> | 113 C<[Serializable]> |
114 | 114 |
115 , . | 115 Класс, реализующий фабрику классов. |
116 | 116 |
117 , C< new > | 117 Фабрика классов это любой объект, который имеет метод C< new > вызов которого приводит к созданию нового |
118 . , , | 118 объекта. Например каждый класс сам явялется фабрикой, поскольку, если у него вызвать метод |
119 C< new >, . , Perl, | 119 C< new >, то будет создан объект. Полученные объекты, в силу механизмов языка Perl, также |
120 , , . | 120 являются фабриками, притом такимиже, что и класс. |
121 | 121 |
122 C< new > : | 122 Данный класс меняет поведение метода C< new > в зависимости от контекста вызова: статического |
123 . C< new > | 123 метода или метода объекта. При вызове метода C< new > у класса происходит создание объекта |
124 . - | 124 фабрики с определенными параметрами. Далее объект-фабрика может быть использована для создания |
125 . | 125 объектов уже на основе параметров фабрики. |
126 | 126 |
127 =head1 MEMBERS | 127 =head1 MEMBERS |
128 | 128 |
129 =over | 129 =over |
130 | 130 |
131 =item C< CTOR($factory,$parameters,$method) > | 131 =item C< CTOR($factory,$parameters,$method) > |
132 | 132 |
133 . | 133 Создает новый экземпляр фабрики. |
134 | 134 |
135 =over | 135 =over |
136 | 136 |
137 =item C<$factory> | 137 =item C<$factory> |
138 | 138 |
139 , . | 139 Либо имя класса, либо другая фабрика. |
140 | 140 |
141 =item C<$parameters> | 141 =item C<$parameters> |
142 | 142 |
143 , , .. | 143 Ссылка на параметры для создания объектов, может быть ссылкой на хеш, массив и т.д. |
144 | 144 |
145 , | 145 Если является ссылкой на хеш, то при создании объектов данной фабрикой этот хеш |
146 C<new>. | 146 будет развернут в список и передан параметрами методу C<new>. |
147 | 147 |
148 , | 148 Если является ссылкой на массив, то при создании объектов данной фабрикой этот массив |
149 C<new>. | 149 будет передан в списк и передан параметрами методу C<new>. |
150 | 150 |
151 , | 151 Если является любым другим объектом или скаляром, то будет передан параметром методу |
152 C<new> . | 152 C<new> как есть. |
153 | 153 |
154 =item C<$method> | 154 =item C<$method> |
155 | 155 |
156 ( ), C<$factory> | 156 Имя метода (или ссылка на процедуру), который будет вызван у C<$factory> при создании |
157 . | 157 текущей фабрикой нового объекта. |
158 | 158 |
159 =back | 159 =back |
160 | 160 |
161 =item C< [get] factory > | 161 =item C< [get] factory > |
162 | 162 |
163 , . | 163 Свойство, содержащее фабрику для создание новых объектов текущей фабрикой. Чаще всего оно содержит |
164 . | 164 имя класса. |
165 | 165 |
166 =item C< [get] parameters > | 166 =item C< [get] parameters > |
167 | 167 |
168 , , | 168 Свойство, содержит ссылку на параметры для создания объектов, при создании объекта эти параметры будут |
169 C< new > C< factory >, | 169 развернуты в список и переданы оператору C< new > фабрике из свойства C< factory >, за ними будут |
170 . | 170 следовать параметры непосредственно текущей фабрики. |
171 | 171 |
172 =item C<new(@params)> | 172 =item C<new(@params)> |
173 | 173 |
174 , C<factory> | 174 Создает новый объект, используя свйство C<factory> как фабрику и передавая туда параметры |
175 C<parameters> C<@params>. , . | 175 из свойства C<parameters> и списка C<@params>. Ниже приведен упрощенный пример, как это происходит. |
176 | 176 |
177 =begin code | 177 =begin code |
178 | 178 |
179 sub new { | 179 sub new { |
180 my ($this,@params) = @_; | 180 my ($this,@params) = @_; |