|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Brindeew 2:5020/400 18 Dec 2002 15:05:16 To : Artem Chuprina Subject : Re: Strong OO-programming & SQL databases -------------------------------------------------------------------------------- On Tue, 17 Dec 2002 17:11:19 +0000 (UTC) Artem Chuprina <ran@ice.ru> wrote: > AB> Как в конструкторе создать несколько экземпляров класса Object::Good > Если их создается несколько, то это уже не конструктор, а factory. Точно, пардон за путаницу с точки зрения терминологии. > Основная идея - factory отбирает нужные записи, а потом зовет конструкторы уже > не на на основании базы, а на основании готовых данных. А как поступить, если те конструкторы, которые потом ты предлагаешь "звать" с уже готовыми данными, находятся глубоко вниз по дереву наследования и сами могут вызываться как первичные? Поясню: есть Object::Catalog (представление каталога категорий чего-либо как целого), Object::Catalog::Category (конкретная категория как она есть, интерфейсы для ее удаления, изменения атрибутов), Object::Good & Object::Good::Category - у него в @ISA стоит Object::Catalog::Category, а существенно переопределяется только удаление - в СУБД должна удаляться не сама категория каталога, а привязка (из таблицы *_cats, задающей отношение многие-ко-многим) объекта к ней. Поэтому все переопределение factory сводится к переименованию передаваемых параметров и вызову с ними $classname->SUPER::new(%p) . Приходим к тому, что factory класса Object::Catalog::Category долна принимать как уже готовые данные для порождения объектов, так и список id. Это является нормальным? > Так надо передавать не WHERE, а внятное с точки зрения твоей конструкции > условие. Из которого в factory генерировать WHERE. Меня интересует - есть ли уже подобные готовые механизмы в районе CPAN? Потому как генерация WHERE (при наличии нескольких таблиц, алиасов и join'ов для меня пока несколько затруднительна). > Соответственно, покусать на части. Если подобное встречается часто, то сделать > свой промежуточный слой, который будет бить список на кусочки, дергать базу > несколько раз, суммировать результаты и возвращать просуммированное. Понятно. :-( Я думал есть менее извратные методы решения этой проблемы. -- WBR, Andrey Brindeew. "No one person can understand Perl culture completely" (C) Larry Wall. --- ifmail v.2.15dev5 * Origin: MTU-Intel ISP (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/2825642bd80e.html, оценка из 5, голосов 10
|