Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Считать это "грязным хаком" ? или же "хорошим решением" ? 
V
    Опции темы
Mal Hack
Дата 10.1.2006, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Alone ну а как ты себе представляешь такую картину.
Ты в текущий объект, в выполняем методе, да и еще в this, который только для внутреннего пользования создаешь новый объект. По логике Access Violation должен быть. Как это работает - диву даюсь.
PM ICQ   Вверх
Sardar
Дата 10.1.2006, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Alone паттерн factory предпологает что класс имеет статичный метод, генерящий конкретный instance, например:

Код
require_once('DB.php');

//где возвращаеться конкретный обьект, реализующий логику
$con=&DB::connect('mysql://root@localhost/my_db');

В PEAR: DB драйвера наследуються от DB_common, но сути не меняет, можешь свои обьекты наследовать от абстракного MyClass и писать MyClass::Instance('my_sub_type');

Это будет правильно, а не new чего то.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Alone
Дата 11.1.2006, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: нет
Всего: 6



Sardar
Цитата

Это будет правильно, а не new чего то.


Та же "банда четырех" определяет назначение шаблона abstract factory как "предоставление интерфейса для создания семейств связанных между собой или зависимых друг от друга объектов без указания их конкретных классов"
Шаблон abstract factory гарантирует что система всегда реализует именно тот набор объектов, который отвечает данной ситуации.
Так что таки моя реализация соответствует определению. Да. В твоем пировском примере реализована именно фабрика. Я это место как раз и рассматривал для экспериментов smile Просто как вариант, подумалось, что если вместо отдельного метода, который инстанцирует и возвращает ссылку на новый объект - сделать это в конструкторе , с подменой текущего объекта.


PS: у меня еще с времен ZX-80 осталась "манечка" к минимизации всего. Вот и тут узрел экономию на целый объект smile
Добавлено @ 00:48
Mal Hack
Цитата

По логике Access Violation должен быть. Как это работает - диву даюсь.

О, вот это уже интереснее... Да. тут с тобой соглашусь... но блин работает... я попробую еще под нагрузкой, чтоб память "поработала", и хотелось бы тесты на рнр5, если у кого есть...


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Sardar
Дата 11.1.2006, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Цитата(Alone @ 10.1.2006, 23:46 Найти цитируемый пост)
сделать это в конструкторе , с подменой текущего объекта.

Не каждый язык позволит "вернуть" другой обьект (в Java например физически не возможно), также по идее вообще в бесконечный цикл должен твой код убежать. Операция new стоит особнячком от обычной посылки сообщения, это выделение памяти, а конструктор это не просто метод. Для PHP конечно разницы особой нет (кроме памяти, резервируеться место под a и b(что в свою очередь резервирует ещё под своего а)), создаёться хештаблица на подобие той что в массивах юзаеться, далее вызываеться обычный метод, что на время считаеться конструктором.

В итоге, лучше так не делай smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Alone
Дата 11.1.2006, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: нет
Всего: 6



убедил. не буду.
Добавлено @ 01:06
кстати, в пире больше подошел бы паттерн адаптер вместо фабрики... IMHO smile


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 11.1.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Цитата(Alone @ 11.1.2006, 01:46 Найти цитируемый пост)

О, вот это уже интереснее... Да. тут с тобой соглашусь... но блин работает... я попробую еще под нагрузкой, чтоб память "поработала", и хотелось бы тесты на рнр5, если у кого есть...

$this = чего-то; вызовет фатальную ошибку, по словам интерпретатора "Нельзя переназначить внутренний указатель объекта".


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.