Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Как структурировать логику домена?




Логика простая — сценарий транзакции (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
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).

Как зафиксировать сделанные изменения в базе данных в рамках одного клиентского запроса?

Оптимистическая автономная блокировка (Optimistic Offline Lock).

Я не могу допустить, чтобы пользователь потерял результаты проделанной работы — пессими­стическая автономная блокировка (Pessimistic Offline Lock).

 

Как наложить общую блокировку на группу взаимосвязанных объектов?

Блокировка с низкой степенью детализации (Coarse-Grained Lock).

Как гарантировать выполнение всех необходимых действий по наложению и снятию блокировки?

Неявная блокировка (Implicit Lock).

19. Как осуществлять удаленный доступ к объектам, имеющим интерфейс с высокой степенью детализации?

Интерфейс удаленного доступа (Remote Facade).

20. Как передать содержимое нескольких объектов в одном удаленном вызове?

Объект переноса данных (Data Transfer Object).

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...