Name Description Scope
PO - Persistent Object(持久对象);
- 映射到DB表;
- 用于持久层。如DB;
DAO、Service
VO - Value Object(值对象,贫血模型,简化BO)
- View Object(视图对象。如age小于18的,显示为“未成年人”;大于18岁显示为“成年人”)
{
“name”: “Cooper”,
“ageDescription”: “成年人”
}

DTO表示法(由页面根据业务规则进行转换显示):
{
“name”: “Cooper”,
“age”: “20”
}
- Value Service:Service
- View Object:Controller、Client
DTO - Data Transfer Object(数据传输对象)
- 系统/服务之间传输的对象;
- 类似于VO,但包含的是原始数据。如age
- 删减的BO对象。如删减fields或methods;
Controller、Client
BO - Business Object(业务对象);
- 包含全属性、setter/getter、业务方法(通过属性进行业务计算的方法)等;
- 利用DAO、PO、VO(Value Object)进行业务操作;
Service
DO - Domain Object(领域对象【Domain-Driven Design】,类似BO。主流。充血模型,可包含多个VO) Domain Layout
DO - Data Object(数据对象【阿里巴巴的开发手册】。部分)
- 等同于PO
DAO、Service
POJO - Plain Old Java Objects(普通的旧 Java 对象)
- 一个普通的 Java 对象;
- 除Java语言规范强制执行的限制之外,不受任何特殊限制的约束(如继承框架类、包含类路径等);
- 通常用于表示一些简单的数据模型或对象;
Java Beans - 可序列化的 POJO(需实现Serializable接口);
- 具有无参构造函数;
- 允许使用遵循简单命名约定的 getter/setter访问属性;
- 可实现其他接口。如多线程接口(Runnable);