智能领域对象设计(演绎发展)-1
关于智能领域对象的设计,一直没有拿出确实的例子来说明这样编程的好处和优点,以及如何正确地理解这种编程方式。接下来我开始从传统Service + DAO开发模式开始改造和发展,直到变化成智能领域对象设计的开发模式上来,对于每一种变化,我会统计出手工代码编写行数(setter 、getter和import等就不在统计范围内了),看看生产力的变化。任何生产力的提高都是体现在机械代替重复而又规律的工作上,我们选择的案例同样是本应该被工业化掉的东西,但还在手工劳作。
传统的Service + DAO包括三个核心类,以“用户”对象为例,通常包括的类:User, UserService, UserDAO。通常需要的外部支持是:hibernate/jpa,spring。为了演示方便忽略掉接口(如IUserService),也不再区分PO和VO。事实上案例演示完成后,你会发觉这两个东西确实很少使用。
??? 这个实例中包含了一个持久层框架Thin,我先将有关持久的论述写在这里,你可以先看实例回头有兴趣再这段内容:所谓对象的持久就是把对象的属性登记在数据库中,在现实生活是经常发生的,如我们去银行办一个储蓄卡,需要填表,而填表的过程就是持久化的过程。看看这张表格,便会发现所有填写项都可以用key-value表示,再考察我们是如何区分现实对象,便会发现同样是以对象的属性为区分依据,属性就可以用key-value表示,所以无论任何对象只要被持久必然可转化成key-value,唯一的不同就是key-value的存储方法不同而已,即:key-value是一切对象持久的接口。如果应用程序的持久方式是基于key-value的,那么这种应用不仅便于更换不同的关系数据库,即使是往NO-SQL数据库上移植,纵然我对No-SQL数据库不甚了解,但它绝不会偏离本质。Thin就是这么一个工具,把对象转化成key-value,然后存入对应的表,反之亦可。科学家通常用习惯用“美”来衡量结论正确性,虽然没有什么科学依据,但也屡试不爽。key-value是一切对象持久的接口,这个结论是美的,大家可以顺便考量一下thin的短小精干是否也符合美的标准。”大道若简”,我相信基于key-value的持久方式,正是持久层的“大道”。