当前位置: 首页 > news >正文

34-Java传输对象模式 ( Transfer Object Pattern )

Java传输对象模式

    • 实现
    • 范例

  • 传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据
  • 传输对象也被称为数值对象,没有任何行为
  • 传输对象是一个具有 getter/setter 方法的简单的 POJO 类,它是可序列化的,所以它可以通过网络传输
  • 服务器端的业务类通常从数据库读取数据,然后填充 POJO,并把它发送到客户端或按值传递它
  • 对于客户端,传输对象是只读的
  • 客户端可以创建自己的传输对象,并把它传递给服务器,以便一次性更新数据库中的数值
  • 以下是这种设计模式的实体:
    • 业务对象(Business Object) - 为传输对象填充数据的业务服务
    • 传输对象(Transfer Object) - 简单的 POJO,只有设置/获取属性的方法
    • 客户端(Client) - 客户端可以发送请求或者发送传输对象到业务对象

实现

在这里插入图片描述

  • 创建一个作为业务对象的 StudentBO 和作为传输对象的 StudentVO ,它们都代表了我们的实体
  • TransferObjectPatternDemo ,我们的演示类在这里是作为一个客户端,将使用 StudentBO 和 Student 来演示传输对象设计模式

范例

1. 创建传输对象 StudentVO

StudentVO.java

package com.demo.gof;
public class StudentVO{private String name;private int rollNo;StudentVO(String name, int rollNo){this.name = name;this.rollNo = rollNo;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getRollNo() {return rollNo;}public void setRollNo(int rollNo) {this.rollNo = rollNo;}
}

2. 创建业务对象 StudentBO

StudentBO.java

package com.demo.gof;
import java.util.ArrayList;
import java.util.List;public class StudentBO {//列表是当作一个数据库List<StudentVO> students;public StudentBO(){students = new ArrayList<StudentVO>();StudentVO student1 = new StudentVO("Robert",0);StudentVO student2 = new StudentVO("John",1);students.add(student1);students.add(student2);       }public void deleteStudent(StudentVO student) {students.remove(student.getRollNo());System.out.println("Student: Roll No " + student.getRollNo() +", deleted from database");}//从数据库中检索学生名单public List<StudentVO> getAllStudents() {return students;}public StudentVO getStudent(int rollNo) {return students.get(rollNo);}public void updateStudent(StudentVO student) {students.get(student.getRollNo()).setName(student.getName());System.out.println("Student: Roll No " + student.getRollNo() +", updated in the database");}
}

3. 使用 StudentBO 来演示传输对象设计模式

TransferObjectPatternDemo.java

package com.demo.gof;
public class TransferObjectPatternDemo {public static void main(String[] args) {StudentBO studentBusinessObject = new StudentBO();//输出所有的学生for (StudentVO student : studentBusinessObject.getAllStudents()) {System.out.println("Student: [RollNo : "+student.getRollNo()+", Name : "+student.getName()+" ]");}//更新学生StudentVO student =studentBusinessObject.getAllStudents().get(0);student.setName("Michael");studentBusinessObject.updateStudent(student);//获取学生studentBusinessObject.getStudent(0);System.out.println("Student: [RollNo : "+student.getRollNo()+", Name : "+student.getName()+" ]");}
}

编译运行以上 Java 范例,输出结果如下

$ javac -d . src/main/com.demo/gof/TransferObjectPatternDemo.java
$ java  com.ddkk.demo.TransferObjectPatternDemo
Student: [RollNo : 0, Name : Robert ]
Student: [RollNo : 1, Name : John ]
Student: Roll No 0, updated in the database
Student: [RollNo : 0, Name : Michael ]
http://www.lryc.cn/news/324819.html

相关文章:

  • flutter实现视频播放器,可根据指定视频地址播放、设置声音,进度条拖动,下载等
  • 微服务(基础篇-001-介绍、Eureka)
  • mac 解决随机出现的蓝色框
  • 深入理解与使用go之函数与方法--使用
  • 【QT问题】 Qt信号函数如果重名,调用怎么处理
  • 登山小分队(dfs,模拟)
  • Luminar Neo:重塑图像编辑新纪元,Mac与Win双平台畅享创意之旅
  • 计算机二级Python题库深度解析与备考策略
  • 微信商家转账到零钱:实用指南,涵盖开通、使用与常见问题
  • [精选]Kimi到底是什么,将带来什么?
  • MySQL学习笔记------SQL(2)
  • 【循环神经网络rnn】一篇文章讲透
  • KW音乐搜索参数
  • SpringBoot3+Vue3项目的阿里云部署--将后端以及前端项目打包
  • MySQL 存储引擎
  • perl:打开文件夹,选择视频文件,并播放
  • 分布式链上随机数和keyless account
  • 【项目设计】基于MVC的负载均衡式的在线OJ
  • MRC是谁?- 媒体评级委员会 Media Rating Council
  • 反序列化漏洞简单知识
  • Es之正排索引与倒排索引
  • wordpress将图片默认连接到媒体文件
  • Java学习笔记 | Java基础语法 | 03 | 流程控制语句
  • 记录新人的web3之旅
  • 由浅到深认识Java语言(9):Eclipse IDE简介
  • 游戏引擎中的地形系统
  • 【论文精读】OTA: Optimal Transport Assignment for Object Detection(物体探测的最优传输分配)
  • 无极低码SQL模板引擎使用教程示例,自己手撸一个sql模板引擎进行动态sql生成。
  • Python学习(一)
  • Day62:WEB攻防-PHP反序列化CLI框架类PHPGGC生成器TPYiiLaravel等利用