Как снабдить логику домена более отчетливым интерфейсом API?
Слой служб (Service Layer).
Как структурировать процесс представления данных в Web?
Модель-представление-контроллер (Model View Controller).
Как организовать обработку HTTP-запросов?
Поток функций приложения довольно прост, а каждый (или почти каждый) адрес URL соответствует отдельному документу Web-сервера — контроллер страниц (Page Controller).
Поток функций приложения довольно сложен — контроллер запросов (Front Controller). Мне нужна поддержка пользователей из других стран или гибкие политики безопасности — контроллер запросов (Front Controller).
Как управлять форматированием Web-страниц?
Я предпочитаю отредактировать HTML-код страницы и вставить в него маркеры для отображения динамических данных — представление по шаблону (Template View).
Я рассматриваю Web-страницу как результат преобразования данных домена (возможно, находившихся в формате XML) — представление с преобразованием (Transform View). Я хочу подвергнуть глобальным изменениям внешний вид и поведение своего сайта — двухэтапное представление (Two Step View).
Я хочу, чтобы один и тот же логический экран имел несколько различных представлений — двухэтапное представление (Two Step View).
Как управлять сложным потоком функций приложения?
Контролпер приложения (Application Controller).
Как взаимодействовать с базой данных?
Я использую сценарий транзакции (Transaction Script) — шлюз записи данных (Row Data Gateway).
Я использую сценарий транзакции (Transaction Script), и моя платформа обеспечивает хорошую поддержку множества записей ((Record Set) — шлюз таблицы данных (Table Data Gateway).
Структура модели предметной области (Domain Model) в точности соответствует таблицам базы данных — активная запись (Active Record).
Модель предметной области (Domain Model) довольно сложна — преобразователь данных (Data Mapper).
Я использую модуль таблицы (Table Module) — шлюз таблицы данных (Table Data Gateway).
8. Как гарантировать, что одни и те же данные не будут загружены в несколько разных объектов при
ложения?
Коллекция объектов (Identity Map).
Как сохранить связь объектов домена с соответствующими записями базы данных?
Поле идентификации (Identity Field).
Как сократить количество кода, описывающего отображение объектов домена на базу данных?
Отображение метаданных (Metadata Mapping).
11. Как сформулировать запрос к базе данных в терминах модели предметной области (Domain
Model)?
Объект запроса (Query Object).
Как сохранить связи между объектами в базе данных?
У меня есть ссылка на один объект — отображение внешних ключей (Foreign Key Mapping).
У меня есть ссылка на коллекцию объектов — отображение внешних ключей (Foreign Key Mapping).
У меня есть отношение типа "многие ко многим" — отображение с помощью таблицы ассоциаций (Association Table Mapping).
У меня есть коллекция объектов, которые используются только в контексте другого объекта — отображение зависимых объектов (Dependent Mapping).
У меня есть поле, в котором хранится объект-значение (Value Object) — внедренное значение (Embedded Value).
У меня есть сложная сеть объектов, которые не используются другими частями базы данных — сериализованный крупный объект (Serialized LOВ).
Как избежать загрузки в оперативную память всего содержимого базы данных?
Загрузка по требованию (Lazy Load).
Как сохранить структуры наследования в реляционной базе данных?
Наследование с одной таблицей (Single Table Inheritance).
Наличие общей таблицы для всей иерархии наследования приведет к созданию высокой конкуренции за право доступа к таблице — наследование с таблицами для каждого класса (Class Table Inheritance).
Создание общей таблицы для всей иерархии наследования приводит к бессмысленной трате свободного места — наследование с таблицами для каждого класса (Class Table Inheritance). Выполнение запросов требует слишком большого числа соединений, но применять общую таблицу все-таки не хочется — наследование с таблицами для каждого конкретного класса (Concrete Table Inheritance).
15. Как отслеживать считывание и изменение объектов?
Единица работы (Unit of Work).