最近在搞一个项目,用到了 springMVC,加深了我对VO和PO的理解,有感而发。

1 写在之前的提示

VO == Value Object

PO == Persistant Object

VO对应页面,PO对应实体/关系型映射

 

2 在你的程序中,如果没有VO,那么说明你的程序很可能不是以面向对象的思想来设计的,或者说你把PO同时当成了VO使。

实体:

     Order {

     id

     createDate

  }

当我页面上需要对订单进行创建时间过滤时,有两种方式,一种方式是非面向对象的设计,另一种是在PO中加入 createDateStart、createDateClose,即

  Order {

     id

     createDate

     createDateStart

     createDateClose

  }

这个时候就是Order 即使PO也是VO

为什么不用更优雅的设计

  OrderValueObject {

     id

     createDateStart

     createDateClose

  }

  

  OrderPersistenceObject {

     id

     createDate

  }

不是更清晰、更优雅吗?什么?代码量很高?哦,朋友,你不知道有代码生成器这回事儿吗?