![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
-------------------- |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
А что именно?
Зачем создавать объект внутри? |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
Ну, скажем, класс а является абстрактным базовым, и от него унаследованы х классов.
В зависимости от определенного условия, необходимо взаимодействовать с классом, имя и реализация которого неизвестна (паттерн abstract_factory). Пример: $db1 = &new DbProvider("pgsql"); $db2 = &new DbProvider("mysql"); В зависимости от входного параметра будут созданы объекты необходимых типов (mysql, pgsql), кои являются прямыми наследниками DbProvider Заодно экономия по памяти... -------------------- |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Я бы делал проще.
Объявлял один класс, если это так надо, и описывал второй класс, причем второй наследует свойства и методы первого. И создаешь ты один объект от описания второго класса. |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
В примере используется АБСТРАКТНЫЙ класс DbProvider. Создается экземпляр его типа вот так: $db = new DbProvider("pgsql"); или так: $db = new DbProvider(); Тебе известны свойства и методы класса DbProvider, а что он внутри себя делает - это НИКОМУ не должно быть известно.
Я не должен об этом объекте ничего знать. Ни как он называется, ни где лежит... -------------------- |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Alone я несколько не понимаю смысла... Ты делаешь интерфейс базы. Тебе надо всего лишь выбрать базу и все, но сами классы для каждой БД у тебя хранятся в разных файлах, но имеют одинаковое строение.
При чем тут абстракция? |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
Возможно с классами для БД получился несколько неудачный пример.
Я не хотел конкретизировать вопрос на БД. Это был частный случай. (как видно не совсем удачный)... Представь себе, что за абстрактным классом скрыта реализация 20 различных классов, наследованных от базового, и при каком условии используется тот или иной класс - тебе неизвестно. Ты общаешься ТОЛЬКО через описанный интерфейс. Вот для такого случая я хотел задать первоначальный вопрос... -------------------- |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Aloneа смысл?
|
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
смысл чего?
-------------------- |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Абстрактных классов. На практике.
|
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
Э... перечитай плиз мой пост (про пример с скрытой реализ-ей 20 классов) еще раз.
Вроде как понятно изложил... Если непонятно - хрен с ним... закрывай эту тему. -------------------- |
|||
|
||||
| Bikutoru |
|
|||
|
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
Alone, по-моему гораздо лучшебудет, если абстрактный класс не будет знать о своих наследниках, а заботу о создании конкретной реализации абстрактного класса лучше возложить на отдельный клас/метод. Например так:
-------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
| Alone |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
Похоже меня никто не понял...
Я не конкретную задачу решаю, а "обсасываю" механизм.
Я всего лишь хотел спросить, если заменить ЭТО:
на ЭТО:
А все ударились в советы... -------------------- |
||||||
|
|||||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
||||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
м... какой на твой взгляд ошибкой? Языка? Синтаксической?
Ни тому ни другому оно не противоречит. Тесты показали полную работоспособность Вот как обстоит дело в рнр5... Может у них кардинально взгляды изменились... -------------------- |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |