一.对象分类:
-
VO(View Object)视图对象:
- 用于展示层,通常是Web页面,它从业务模型(BO)中取得数据并将数据展示给用户。VO通常包含了页面所需的所有数据,但不包含业务逻辑。
-
O/R Mapper(Object/Relational Mapping)对象/关系映射:
- 这是一种程序设计技术,用于将对象模型映射到关系数据库模型上。它允许开发者用对象的方式来操作数据库,而不是直接编写SQL语句。
-
PO(Persistant Object)持久对象:
- 与数据库表结构一一对应的对象,通常用于数据持久层,直接与数据库交互。PO包含数据库表的所有字段,但不包含业务逻辑。
-
VO与PO区别:
- VO主要面向展示层,用于数据的展示,而PO主要面向数据持久层,用于数据的存储和检索。VO可以包含一些业务逻辑,而PO则不包含业务逻辑,只包含数据字段。
-
BO(Business Object)业务对象:
- 封装业务逻辑的对象,它直接与业务逻辑层交互,可以包含业务规则和业务流程。BO通常由多个PO组成,或者是一个VO的业务逻辑增强版。
-
POJO(Plain Old Java Object)简单老式Java对象:
- 这是一个没有遵循任何特定Java EE规范的普通Java对象。POJO通常用于表示业务对象,它们简单、轻量,没有侵入性。
-
DAO(Data Access Object)数据访问对象:
- 用于封装数据访问逻辑的对象,通常用于访问数据库。DAO提供了一组方法来访问和操作数据库,如增加、删除、修改和查询数据。
-
DTO(Data Transfer Object)数据传输对象:
- 用于不同层次或不同服务之间传输数据的对象。DTO通常用于远程调用,如Web服务或分布式系统中,它封装了传输的数据。
-
TO(Transfer Object)传输对象:
- 与DTO类似,TO也是用于不同层次或系统间数据传输的对象。在某些上下文中,TO和DTO可以互换使用。
-
QO(Query Object)查询对象:
- 用于封装查询条件和规则的对象,通常用于接收前端传递的查询参数,并构建数据库查询。
-
DO(Domain Object)领域对象:
- 代表业务领域的对象,通常包含业务逻辑和数据。DO是业务模型的核心,它反映了业务领域中的实体和规则。
这些对象在软件架构中扮演不同的角色,它们帮助开发者将业务逻辑、数据访问和数据展示分离,以提高代码的可维护性和可扩展性。
- 代表业务领域的对象,通常包含业务逻辑和数据。DO是业务模型的核心,它反映了业务领域中的实体和规则。
二.举例分析
-
VO(View Object)视图对象:
public class BookVO { private String title; private String author; private double price; private int stock; // getters and setters }
- 假设我们有一个在线书店,VO可能是一个
BookVO
类,它包含书名、作者、价格和库存数量等属性,这些信息用于展示给用户看。
- 假设我们有一个在线书店,VO可能是一个
-
PO(Persistant Object)持久对象:
public class BookPO { private int id; private String title; private String author; private double price; private int stock; // getters and setters }
- 对于同一个在线书店,PO可能是一个
BookPO
类,它与数据库中的books
表对应,包含所有数据库字段。
- 对于同一个在线书店,PO可能是一个
-
BO(Business Object)业务对象:
public class BookBO { private BookPO bookPO; private double discount; public double calculateDiscountedPrice() { return bookPO.getPrice() * (1 - discount); } // getters and setters }
BookBO
可能包含BookPO
对象,并提供一些业务逻辑,比如计算折扣价格或检查库存是否足够。
-
POJO(Plain Old Java Object)简单老式Java对象:
public class User { private String name; private String email; // getters and setters }
- 一个没有任何框架依赖的简单Java类,比如一个
User
类,只有一些基本的属性和方法。
- 一个没有任何框架依赖的简单Java类,比如一个
-
DAO(Data Access Object)数据访问对象:
public class BookDAO { public void addBook(BookPO book) { // code to insert book into database } public void deleteBook(int id) { // code to delete book from database } public List<BookPO> findBooksByAuthor(String author) { // code to query books from database return null; } }
BookDAO
可能包含一些方法来操作数据库,比如添加新书、删除书籍或查询书籍。
-
DTO(Data Transfer Object)数据传输对象:
public class OrderDTO { private List<BookVO> books; private String customerName; private String shippingAddress; // getters and setters }
OrderDTO
可能用于封装订单信息,当需要将数据从一个服务传递到另一个服务时使用。
-
TO(Transfer Object)传输对象:
public class UserTO { private String username; private String password; // getters and setters }
UserTO
可能用于封装用户信息,用于在不同的系统或层之间传输用户数据。
-
QO(Query Object)查询对象:
public class BookSearchQO { private String title; private String author; private Double minPrice; private Double maxPrice; // getters and setters }
BookSearchQO
可能用于封装搜索书籍的条件,比如书名、作者和价格范围。
-
DO(Domain Object)领域对象:
public class LibraryDO { private BookPO bookPO; private boolean isBorrowed; // getters and setters }
LibraryDO
可能代表图书馆中的一本书,包含书籍信息和图书馆特有的属性,如借阅状态。