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) = @_; |
