本周的技术研讨会上,部门的同事就PO和VO的使用提出了不同意见,和hibernate中文网站的争论一样,形成了两派意见,一派是PO可以用在商业逻辑层,当作VO使用,一派是不同意这种看法,认为PO用在商业逻辑层不合适,我就是这一派的支持者。
在会上我说了自己的观点和理由:
PO只能用在数据层,VO用在商业逻辑层和表示层。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维护和扩展。如果将PO用在各个层中就相当于我们使用全局变量,我们知道在OO设计非常不赞成使用全局变量。
当然我们在实际项目中有时候会在某个商业逻辑或者表示层使用PO,我觉得只有当下列条件满足的时候,这样做是可以允许的:
那就是在这个商业逻辑的过程中PO的状态是不发生变化的,比如显示一条商品详细信息的商业逻辑。
总结:
不管是对类的设计还是系统的设计,原则都是一致的:类、系统的各个部分功能要独立简单,封装性好,逻辑和数据都要保持独立。