Лучшим справочником является «Образцы архитектуры корпоративных приложений» Мартина Фаулера:
Вот выдержка из раздела «Настольный модуль»:
A Настольный модуль организует домен
логика с одним классом на таблицу в
база данных, и один экземпляр
класс содержит различные процедуры
это будет действовать на данных.
основное различие с доменом
Модель такова, если у вас много
заказы, модель домена будет иметь один
объект заказа за заказ, в то время как таблица
Модуль будет иметь один объект для обработки
все заказы.
Table Module был бы особенно полезен в гибкой архитектуре базы данных, которую вы описали для данных своего профиля пользователя, в основном это Entity-Attribute-Value design.
Как правило, если вы используете модель домена, каждая строка в базовой таблице становится одним экземпляром объекта. Поскольку вы храните информацию о профиле пользователя в нескольких строках, вам в конечном итоге необходимо создать много объектов модели домена, тогда как вам действительно нужен один объект, который инкапсулирует все пользовательские свойства.
Вместо этого табличный модуль упрощает кодирование логики, которая применяется к нескольким строкам в базовой таблице базы данных. Если вы создаете профиль для данного пользователя, вы должны указать все эти свойства, а класс Table Module будет иметь код для его преобразования в серию операторов INSERT
, по одной строке на свойство.
$table->setUserProfile( $userid, array('firstname'=>'Kevin', 'lastname'=>'Loney') );
Аналогичным образом, запрос профиля данного пользователя будет использовать модуль таблиц для сопоставления нескольких строк набора результатов запроса с элементами объекта.
$hashArray = $table->getUserProfile( $userid );