Паттерн Transfer Object
Шаблон объекта передачи используется для передачи данных с несколькими атрибутами от клиента к серверу за один раз. Объекты передачи также известны как объекты-значения. Объект передачи — это простой POJO-класс с методами getter/setter; он сериализуем, поэтому может передаваться по сети. Он не имеет никакого поведения. Бизнес-классы на стороне сервера обычно читают данные из базы данных, заполняют POJO и отправляют его клиенту или передают по значению. Для клиента объект передачи доступен только для чтения. Клиент может создать собственный объект передачи и передать его на сервер, чтобы обновить значения в базе данных за один раз. Ниже перечислены сущности этого шаблона проектирования.
- Бизнес-объект- Бизнес-сервис, который заполняет объекты передачи данными.
- Объект передачи- Простой POJO, имеет только методы для установки/получения свойств.
- Клиент- Клиент может отправлять запросы или отправлять объекты передачи бизнес-объектам.
summary
назначение
Используется для упрощения передачи данных между сетевыми или прикладными уровнями. Он инкапсулирует данные, создавая класс с несколькими свойствами; эти свойства представляют данные, которые должны быть переданы.
Основная решаемая проблема
- Решает проблемы эффективности и инкапсуляции при передаче данных между уровнями в распределённых системах, особенно в многоуровневых приложениях.
Сценарий использования
- Когда между клиентом и сервером требуется передавать большие объёмы данных, особенно в веб-сервисах или удалённых вызовах процедур (RPC).
Подход к реализации
- Класс объекта передачи: Определите класс, содержащий несколько атрибутов; эти атрибуты представляют данные, которые нужно передать.
- Уровень доступа к данным: Отвечает за извлечение данных из базы данных или других источников данных и заполнение ими объектов передачи.
- Уровень бизнес-логики: Необязательный, обрабатывает бизнес-логику, может использовать объекты передачи.
- Уровень представления или клиент: Использует объекты передачи для отображения данных или в качестве носителя данных для пользовательского ввода.
Ключевой код
- Класс объекта передачи: Содержит атрибуты и возможную бизнес-логику для инкапсуляции и передачи данных.
Пример приложения
- Веб-приложение: Уровень представления получает или отправляет данные с сервера/на сервер через объекты передачи.
Преимущества
- Сокращение накладных расходов на сетевое взаимодействие: Уменьшает количество сетевых запросов за счёт одновременной передачи нескольких элементов данных.
- Инкапсуляция: Объект передачи служит носителем инкапсуляции данных, скрывая внутреннюю структуру данных.
- Простота поддержки: Централизованно управляет передаваемыми данными, легко модифицировать и расширять.
Недостатки
- Чрезмерное использование: Может увеличить сложность системы из-за создания слишком большого количества объектов передачи.
Рекомендации по использованию
- Когда между разными слоями в многоуровневом приложении требуется передавать большие объёмы данных, рассмотрите возможность использования шаблона Transfer Object.
Примечания
- Transfer-объекты должны оставаться легковесными и не должны содержать избыточную бизнес-логику.
Несколько основных задействованных ролей
-
Класс Transfer Object:
- Инкапсулирует данные, которые необходимо передать.
-
Слой доступа к данным:
- Предоставляет данные и может отвечать за заполнение transfer-объектов данными.
-
Слой бизнес-логики (необязательно):
- Необязательный, обрабатывает бизнес-логику, может использовать transfer-объекты.
-
Слой представления или клиент:
- Использует transfer-объекты для передачи данных или отправки запросов.
Шаблон Transfer Object предоставляет эффективный способ сократить время сетевого взаимодействия и упростить процесс передачи данных за счёт инкапсуляции передаваемых данных в объект.
Реализация
Мы создадим один как бизнес-объектStudentBOи один как объект передачиStudentVO, которые оба представляют нашу сущность.
TransferObjectPatternDemoКласс здесь выступает в роли клиента и будет использоватьStudentBOиStudentдля демонстрации шаблона проектирования «Объект передачи».
Шаг 1
Создайте объект передачи.
StudentVO.java
Шаг 2
Создайте бизнес-объект.
StudentBO.java
Шаг 3
ИспользованиеStudentBOдля демонстрации шаблона проектирования Transfer Object.
TransferObjectPatternDemo.java
Шаг 4
Запустите программу и выведите результат:
Student: [RollNo : 0, Name : Robert ] Student: [RollNo : 1, Name : John ] Student: Roll No 0, updated in the database Student: [RollNo : 0, Name : Michael ]Другие расширения