看看DDD领域驱动设计,直至软件系统部署,数据库才被产生出来(使用Hibernate等技术)。
DDD;领域设计过程是:
领域建模--->Model/Service---->表现层、业务层和持久层同时开工,具体细节:
1.表现层负责界面离散数据和Model Mapping映射,如使用Struts
2.持久层负责将Model持久化,使用Hibernate/EJB的实体Bean技术只要做好Mapping配置即可,无需设计数据库,如果你设计数据库,就发生Model和数据库不匹配现象,两强相争,必有一伤害,哪方做出让步,一般是软件OO比较容易修改,结果不应该让步的一方作出让步,这是错误的。
3.业务层:完成Service具体实现。由于使用Ioc之类框架,使得三层解耦非常好,不互相依赖,业务层关键是应用服务层Service的实现,包括组件技术、模式应用等等,DDD在这方面讲得比较详细。
DDD领域建模其实是告诉我们业务层如何做?使用DDD。
总之,在完全面向对象中,数据库驱动设计方式已经抛弃,数据库时代已经结束,能够接受这样思维的人很少,这是一场革命,相信多年后,它被大多数人接受,至少我现在是这样做。
为什么大家抱着数据库思路不放呢?其实是和教育培训有关,数据结构和算法一直是软件教育的经典,这种培训方式培养学生使用数学思维来设计软件习惯,实际在企业软件中,软件关键是如何快速应付变化,而不是数学公式如何高深,方向就错了。
可惜大家还在数据库设计这个错误思维方向上死不悔改,所以,我想通过Jdon来及早唤醒大家(可能自不量力)。
实战DDD(Domain-Driven Design领域驱动设计):