Как структурировать логику домена?
⇐ ПредыдущаяСтр 3 из 3 Логика простая — сценарий транзакции (Transaction Script). Логика сложная — модель предметной области (Domain Model). Логика не слишком простая и не слишком сложная, а среда разработки содержит достаточно средств для манипулирования множеством записей (Record Set) — модуль таблицы (Table Module, 148).
Как снабдить логику домена более отчетливым интерфейсом 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 Объект запроса (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. Как отслеживать считывание и изменение объектов? Как зафиксировать сделанные изменения в базе данных в рамках одного клиентского запроса? Оптимистическая автономная блокировка (Optimistic Offline Lock). Я не могу допустить, чтобы пользователь потерял результаты проделанной работы — пессимистическая автономная блокировка (Pessimistic Offline Lock).
Как наложить общую блокировку на группу взаимосвязанных объектов? Блокировка с низкой степенью детализации (Coarse-Grained Lock). Как гарантировать выполнение всех необходимых действий по наложению и снятию блокировки? Неявная блокировка (Implicit Lock). 19. Как осуществлять удаленный доступ к объектам, имеющим интерфейс с высокой степенью детализации? Интерфейс удаленного доступа (Remote Facade). 20. Как передать содержимое нескольких объектов в одном удаленном вызове? Объект переноса данных (Data Transfer Object).
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|