Шаблон Table Module (Модуль таблицы) предназначен для реализации бизнес-логики в виде множества объектов, каждый их которых является абстракцией одной таблицы реляционной базы данных.
Для каждой таблицы реляционной базы данных, а также для общеупотребительных виртуальных таблиц и запросов создается по одному классу. Каждый из таких классов содержит атрибуты и методы, при помощи которых клиентские артефакты могут оперировать данными реляционных таблиц.
Формализует обработку бизнес-логики, представляя ее в виде множества классов, каждый из которых отражает таблицу реляционной базы данных.
Модуль таблицы обладает существенными преимуществами перед другими шаблонами организации бизнес-логики, если разные части приложения основаны на общей табличной структуре данных. Чаще всего модуль таблицы приходится видеть в проектах на основе архитектуры ADO и ADO.NET. В ADO и ADO.NET множество записей представляет собой основное хранилище данных, с которыми оперирует приложение. Множества записей могут передаваться элементам управления для воспроизведения информации на экране. Microsoft предлагает весьма адекватный механизм доступа к реляционным данным, и именно поэтому в рамках решений, построенных на платформе ADO и ADO.NET, модуль таблицы позволяет описать бизнес-логику в хорошо структурированном виде.
Каждый из классов, отражающих таблицу базы данных, может содержать методы, позволяющие оперировать данными таблицы (например, find() или applyUpdates(). Однако на практике для манипулирования данными бывает удобнее использовать синтезированные классы – шлюзы таблиц (Table Gateway). Такие классы отвечают за заполнение модулей таблиц данными, а также за сохранение состояния модулей таблиц в базе данных. Недостаток шлюза обусловлен необходимостью конструирования дополнительного класса, а преимущество заключается в возможности применения единого модуля таблицы для данных из различных источников, поскольку каждому отвечает собственный шлюз таблицы данных.
Шлюз таблицы данных позволяет структурировать информацию в виде множества записей, которое затем передается конструктору модуля таблицы в качестве аргумента.