持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情
序言
本人是一个java初学者的水平,工作的时候经常会使用java豆,如下:
public class UserBean {
UserBean(String name){ this.name = name;}
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
一直使用这颗咖啡豆,却不知道它是传输者模式,真是只缘身在此山中啊。
名词解释
传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据。
优点
在传输数据单元的时候,对特定数据单元做校验和数据操作,统一口径,避免了检查口径的混乱。
例子
在很多开源库的api中,配置的传递也都是通过一个统一的配置对象,传输配置对象来传递其所代表的行为。
不仅扩展方便,而且易于校验配置的正确性。
再比如原本我们有磁带听歌,mp3听歌,mp4看电影,大哥大打电话。后来,我们有了智能手机,只需要一部智能手机,我们就可以拥有多个部件的功能。一个传输对象打包带走。
代码示例
User传输对象
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age < 0) {
throw new Error("年龄不能为空");
} else {
this.age = age;
}
}
}
UserBO业务对象
import java.util.ArrayList;
import java.util.List;
public class UserBO {
List<User> userList = new ArrayList<>();
void setUser(User user) {
userList.add(user);
}
User getUser(int index) {
return userList.get(index);
}
}
测试代码
UserBO ub = new UserBO();
User user = new User();
user.setName('jack');
user.setAge(19);
ub.setUser(user);
- 这样书写的javabean在网络传输过程中,极易序列化,用于网络传输。
- 一个对象中各个属性的校验只在对象中校验,不会在对象之外校验,确保了数据流向的清晰。
- 抽象数据单元,有助于我们理清业务对象。