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