先来吐个槽
笔者作为一个代码极端份者,对乐观代码、惰性代码深恶痛绝。在多年的从业经历中看到过、听到过、经历过太多的失败案例和惨痛教育,其归结原因大致可分为 架构不严谨和开发不规范所导致。 在多数系统架构中存在框架滥用、对象定义混乱,职责不清晰等问题。随着产品长期迭代,代码变得不可维护(没有人能改动了!) ,系统性能急剧下降在所难免。笔者今天就系统架构中对每类对象的应用场景进行一个简单梳理。
PO
PO(Persistant Object) 持久对象
通常为数据库模型(表)和对象(类)之间的映射,即一张表对应一个PO对象,PO中不应存在对数据库的操作。笔者建议:PO中也不应该存在模型以外的属性和方法。
BO
BO(business object) 业务对象
通常为一个封装的复杂对象,由PO组成,调用DAO完成业务处理。
VO
VO(View object) 视图对象
通常用于展示层,封装好客户端所需要的对象,为客户端使用。VO和DTO做的工作差不多,个人理解:VO 典型的使用场景是 .net MVC ,DTO 是Web Api。
DO
DO(Domain object) 领域对象
DDD领域驱动设计中的概念。
DAO
DAO(Date Access Object) 数据访问对象
主要负责持久层的操作,用于访问数据库,为业务层提供数据接口。DAO中包含了各种数据库的操作方法,提供数据库的CRUD操作。
DTO
DTO (Data Transfer Object)数据传输对象
通常用于提供数据接口,如web api 、web service等。粗暴通俗的讲就是假如PO具有50个属性,但是我们的数据接口只需提供10个属性,这个时候可以使用DTO。另外客户端和服务端之间的数据传输也应该使用DTO。