public class Person{
    long id;
    String name;
    int age;
    Level level;
    .....
    //一些get set 方法
    public Person load(long id){
        //从数据库加载该对象
    }
}public class PersonVO implements Serializable{
    long id;
    String name;
    int age;
    Level level;
    .....
    //一些get set 方法
}
    我看到一个牛人写的程序,准备在applet与服务器端交互数据时需要序列化
故重构了一个PersonVO对象进行序列化,为什么不直接让Person实现Serializable接口呢
不是一样可以实现序列化么?
    我查了些资料,序列化时静态属性和方法是不会被序列化的,请问大家分析下他为什么要
这样单独抽离一个VO对象进行序列化呢?是不是多此一举呀?

解决方案 »

  1.   

    如果你确定Person和PersonVO是一摸一样的话,我觉得可以直接序列化Person,我估计可能两个类不是完全一样,当PersonVO作为与服务器交互的对象时候,Person是需要适配(adapter)一下转化成PersonVO的。
      

  2.   

    不一样的地方,就是去除了Person中的一些方法,比如代码示例中的load数据库操作方法
      

  3.   

    这个是为了解耦,分层理念;
    Person 是实体对象,PersonVO 是可以理解为业务对象,模样相同使用功能不同
      

  4.   

    这种分层有点蛋痛,struts2都把actionform和action合并了,两个基本完全一样的类需要分开写?设计思想不是类越多越好
      

  5.   

    我看到一个牛人写的程序,准备在applet与服务器端交互数据时需要序列化
    这样最好不要传递你的po 你的po只是数据库对应的一条记录而已 
    而vo作为了数据载体 作为这个最合适不过了