1、VO
Value Object值对象的简称,敏捷开发方法的创始人之一Martin Fowler认为“Value Object as a small object such as a Money or date range object”。
主要用于领域驱动设计(Domain Driven Design),VO的值/实例一般是不会变的,比如下个月的第一个工作日。一般没有Setter方法通过构造函数设定值。
这个是最多被大家无解的。
2、Entity
实体,多用于DB中以表为单位存取数据,类中定义了表的每个字段的Setter/Getter。一个Entity实例即为表中的一条数据。起源于EJB,比如EJB1.x、2.x中的EntityBean,EJB3.x的JPA。
3、Form
起源于Struts,现在也常用语Spring中。主要用于接收页面表单中的数据或者页面显示用数据的存储,包含校验Validate方法。
综上
VO多用于金钱或者时间等代表价值的对象,比较特殊、Form(与页面交互)、Entity(与DB交互)