最近一直在关注领域驱动设计的方法学问题,说实话,这些理论的东西实践起来的确还是很困难,原因
是多方面的,第一:领域驱动设计要求开发设计人员与业务专家一起进行头脑风暴,从而建立起领域模
型来,而这个过程是贯穿软件开发的整个生命周期的,因为领域模型不是一开始就完全建立起来的,而
且开始的模型也可能会随着项目的进行而不断深化变换,这就要求业务专家必须和开发设计人员共同长
期的进行这项活动,因此这一点比较比较困难;第二、领域驱动设计的方法是完全面向对象的思想方法
,与传统的面向过程(也可以说是面向方法)的开发方法有比较大的差异,面向过程开发是将业务逻辑
都在方法里面按照顺序一二三的进行书写,比较集中,领域设计要求将业务逻辑分散到领域模型中去,
降低维护时关注的复杂度。虽然目前很多人都使用面向对象的语言来进行开发,但是他们却是拿着面向
对象的语言进行着面向过程的开发,这种开发方法要求开发人员有较好的面向对象设计开发的能力,对
经验也有一定的要求,需要整个团队的开发人员的技术有一个较高的水平,估计在国内来看,绝大大多
数项目组还是做不到这个要求,因为很多项目中会安排新手来进行编码工作,他们不太重视编码这个环
节,认为是代码民工做的事情,其实不然,这个环节与软件最终出来的质量有相当大的关系。 第三:
该设计方法要求整个项目组都必须集中在同一领域模型的关注点上,必须对其进行精炼浓缩,必须保持
模型的高度一致,如果不然,出现了多套模型,那必然将项目失败的可能性提高到了数个数量级。
因此啊,用与不用,还是有点难于决策啊,我的观点是:过程与领域设计结合,各取所长,来个混血儿
未必不是一个好办法,项目简单,大可采用过程的设计开发方法,如果稍微复杂,那么则可进行提炼重
构采用领域模型来实现复杂的部分,简单的部分仍然不用理会,呵呵,自家之言,有误就斧正!