我想,初学者、交流者都希望有一个真正的代码模型临摹学习才是最终结论,无论上面各位说的是否认为完美情况,因为实际情况千变万化。我个人觉得OO内部涉及的pojo会包含一些逻辑映射,例如:两种类似的对象存放一个表内。如果分开设计可以避免但是会出现数据部分维护困难或者不符合数据设计的三范式。
论实际过程,表示层-服务层-逻辑层-持久层,这种设计我个人认为并不适合对于初期开发的构建,对于多层次的调用查代码是非常困难,除非业务是复杂的、嵌套的,要是初期开发就有这类需求则必须使用以上结构,对于普通的业务性增删查改等简单性操作,我个人认为还是贫血模型比较实际简单,维护方便,可以说项目的70%都是这类的操作。一个项目在开发期可以先使用贫血模型,在业务增加的时候作重构工作,这时候加入服务层,而且是两种结构同时存在。项目是不断的重构扩展的,不可能一成不变。
谈下实际代码结构问题,表示层显示数据通常都是针对多表或者多对象嵌套的二维结构显示,对于持久层映射目标是把数据库带逻辑的二维结构转换为三维或者多维结构。这种转化就目前情况而言即使最好的orm都并不能全部使用持久层框架进行转化,多数情况下必须手动进行代码或者使用框架的查询语句进行查询组合,组合出来后还需要代码性质转换,在开发者角度可以说是一种负累,框架应该是减负的工具。(说一下的小经历,曾经到一间公司面试,面试官居然说,使用算法去转换,这样一来程序员的能力要求需要高了。到此处以致懂某某orm会薪水高些)
请大家考虑以上问题,不要说是人的素质,能力问题。因为这是普篇问题,可以说我见过的代码中非常多这种情况。而且这些代码都出自高谈阔论的程序员手中。实际与说是两码事,这确实存在于我们当中,希望各位给出正解。
(以上谈到的算法与通用算法会有很大出入,通常是业务逻辑夹杂的业务算法。这种代码维护是非常困难的。)