传输对象模式
基本介绍
1.用于从客户端向服务器一次性传递带有多个属性的数据
2.角色
(1)Business Object:业务对象,通常从数据库读取数据,为 Transfer Object 填充数据的业务服务,并把它发送到 Client 或按值传递它
(2)Transfer Object:传输对象,普通 JavaBeans 类,它是可序列化的,所以它可以通过网络传输,它没有任何的行为,只有 getter / setter 方法
(3)Client:客户端,可以发送请求或者发送 Transfer Object 到 Business Object,Transfer Object 是只读的,Client 可以创建自己的 Transfer Object,并把它传递给服务器,以便一次性更新数据库中的数值
代码示例
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class Client {//客户端
public static void main(String[] args) {
BusinessObject businessObject = new BusinessObject();
print(businessObject);
businessObject.updateTransferObject(0, "King");
print(businessObject);
businessObject.deleteTransferObject(0);
print(businessObject);
}
public static void print(BusinessObject businessObject) {
for (TransferObject transferObject : businessObject.getAllTransferObjects()) {
System.out.println(transferObject.toString());
}
}
}
class TransferObject implements Serializable {
private String name;
private int id;
TransferObject(String name, int id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "TransferObject{" +
"name='" + name + '\'' +
", id=" + id +
'}';
}
}
class BusinessObject implements Serializable {
List<TransferObject> transferObjects = new ArrayList<TransferObject>();//模拟数据库
public BusinessObject() {
transferObjects.add(new TransferObject("Robert", 0));
transferObjects.add(new TransferObject("John", 1));
}
public void deleteTransferObject(int index) {
System.out.println("TransferObject:Id " + transferObjects.get(index).getId() + " deleted from database");
transferObjects.remove(index);
}
public List<TransferObject> getAllTransferObjects() {
return transferObjects;
}
public TransferObject getTransferObject(int index) {
return transferObjects.get(index);
}
public void updateTransferObject(int index, String name) {
transferObjects.get(index).setName(name);
System.out.println("TransferObject:Id " + transferObjects.get(index).getId() + " update in database");
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战