Здравствуйте, Nuald, Вы писали:
N>Модуль таблицы в простейшем случае — просто массив данных, к которому можно обращаться через какие-либо итераторы, где каждая итерация возвращает строку (а строка уже может собой представлять либо объект наподобие активной записи, либо просто набор значений в виде еще одного массива).
То что Вы написали — это RecordSet (в терминологии Фаулера), а не модуль таблицы
M>>Можно завести для каждой таблицы базы модуль, но кто в таком случае будет проводить вычисления C?
N>За это отвечает модуль бизнес-логики — он может быть промежуточным между модулем таблицы и представлением (паттерн Преобразователь данных).
Нет уж, извините, опять же, по Фаулеру, модуль таблицы как раз и реализует бизнес-логику.
По моему Вы путаете то что Фаулер называет шлюзом таблицы и модулем таблицы. Это (в идеале) разные вещи. Т.к. пример простой, можно считать что у нас — идеальный случай.
N>Модуль таблицы — лишь часть системы. Рассмотрите систему в контексте MVC: N>1) Model — модуль таблицы + преобразователь данных; N>2) View — осуществляет представление данных, отвечает за все форматирование; N>3) Controller — осуществляет взаимодействие между моделью и представлением.
Один из критериев (опять же, приводимих Фаулером) того, относить что-то к уровню представления или нет, состоит в том, что при замене уровня представления с GUI/web на простой консольный вывод, вам не придется дублировать код. Если отнести форматирование к View, вам придется продублировать его в новом консольном слое представления.
Врочем, мне самому кажется этот момент несколько натянутым.
Предположим поэтому, что то что я назвал форматированием — в действительности сложная обработка, относящаяся к бизнес-логике.