设计模式简介
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。
传输对象模式
传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据。传输对象也被称为数值对象。传输对象是一个具有 getter/setter 方法的简单的 POJO 类,它是可序列化的,所以它可以通过网络传输。它没有任何的行为。服务器端的业务类通常从数据库读取数据,然后填充 POJO,并把它发送到客户端或按值传递它。对于客户端,传输对象是只读的。客户端可以创建自己的传输对象,并把它传递给服务器,以便一次性更新数据库中的数值。以下是这种设计模式的实体。
业务对象(Business Object) - 为传输对象填充数据的业务服务。
传输对象(Transfer Object) - 简单的 POJO,只有设置/获取属性的方法。
客户端(Client) - 客户端可以发送请求或者发送传输对象到业务对象。
实现
public class User {
public String name;
public int age;
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", getName()=" + getName() + ", getAge()=" + getAge() + "]";
}
}
public class UserImpl {
public List<User> list = new ArrayList<>();
public UserImpl() {
list.add(new User("小王", 12));
list.add(new User("小红", 14));
list.add(new User("小明", 15));
list.add(new User("小李", 11));
}
public List<User> getAllUser(){
return list;
}
public User getUserByIndex(int index) {
return list.get(index);
}
}
public static void main(String[] args) {
UserImpl userImpl = new UserImpl();
List<User> users = userImpl.getAllUser();
for (User user : users) {
System.out.println(user);
}
System.out.println("===================================================");
User user = userImpl.getUserByIndex(2);
System.out.println(user);
}
User [name=小王, age=12, getName()=小王, getAge()=12]
User [name=小红, age=14, getName()=小红, getAge()=14]
User [name=小明, age=15, getName()=小明, getAge()=15]
User [name=小李, age=11, getName()=小李, getAge()=11]
===================================================
User [name=小明, age=15, getName()=小明, getAge()=15]