![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Alone ну а как ты себе представляешь такую картину.
Ты в текущий объект, в выполняем методе, да и еще в this, который только для внутреннего пользования создаешь новый объект. По логике Access Violation должен быть. Как это работает - диву даюсь. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 2 Всего: 317 |
Alone паттерн factory предпологает что класс имеет статичный метод, генерящий конкретный instance, например:
В PEAR: DB драйвера наследуються от DB_common, но сути не меняет, можешь свои обьекты наследовать от абстракного MyClass и писать MyClass::Instance('my_sub_type'); Это будет правильно, а не new чего то. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Alone |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
Sardar
Та же "банда четырех" определяет назначение шаблона abstract factory как "предоставление интерфейса для создания семейств связанных между собой или зависимых друг от друга объектов без указания их конкретных классов" Шаблон abstract factory гарантирует что система всегда реализует именно тот набор объектов, который отвечает данной ситуации. Так что таки моя реализация соответствует определению. Да. В твоем пировском примере реализована именно фабрика. Я это место как раз и рассматривал для экспериментов PS: у меня еще с времен ZX-80 осталась "манечка" к минимизации всего. Вот и тут узрел экономию на целый объект Добавлено @ 00:48 Mal Hack
О, вот это уже интереснее... Да. тут с тобой соглашусь... но блин работает... я попробую еще под нагрузкой, чтоб память "поработала", и хотелось бы тесты на рнр5, если у кого есть... -------------------- |
||||
|
|||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 2 Всего: 317 |
Не каждый язык позволит "вернуть" другой обьект (в Java например физически не возможно), также по идее вообще в бесконечный цикл должен твой код убежать. Операция new стоит особнячком от обычной посылки сообщения, это выделение памяти, а конструктор это не просто метод. Для PHP конечно разницы особой нет (кроме памяти, резервируеться место под a и b(что в свою очередь резервирует ещё под своего а)), создаёться хештаблица на подобие той что в массивах юзаеться, далее вызываеться обычный метод, что на время считаеться конструктором. В итоге, лучше так не делай -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
убедил. не буду.
Добавлено @ 01:06 кстати, в пире больше подошел бы паттерн адаптер вместо фабрики... IMHO -------------------- |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
$this = чего-то; вызовет фатальную ошибку, по словам интерпретатора "Нельзя переназначить внутренний указатель объекта". -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |