背景: 最近团队在探讨如何将DDD(领域模型)落地,当然在实现领域模型之前,得熟悉设计模式。设计模式理论上大家还比较清楚,但是在平时的开发过程中却无法落地实践。有的人说咱们主要是业务开发,不太适用设计模式。其实不然,还是大家对面向对象的思维不太习惯。还是习惯于面向过程(贫血模式)的思维。 知识点: 1)贫血模式和充血模式 贫血模式 (面向过程) : 适合业务简单的系统。SQL的CRUD. 开发比较简单和快速。 充血模式(面向对象):适合复杂系统,例如设计各种算法模型的金融系统。开发门槛较高,需要时间进行模型设计。 实现共同点:都可以是三层模型。 实现区别:贫血重service轻BO(只是get和set方法没有业务逻辑) 充血重BO轻service(service的作用就是连接持久层和Domain,跨领域的业务聚合,非功能性和三方系统交互) 2)实践探索 基于团队的现状,可以采用贫血模式和充血模式的混合模式。 首先,还是分层结构,controller和Dao层不变。 其次,service层根据业务复杂度进行充血模式改造,service层引入Domain概念。将业务进行对象建模。(这也是最难的部分,需要理解需求,按照PRD进行建模,然后大家统一认识,不然后期容易造成对象泛滥) 3)演化过程 依据目前团队的技术架构,可以按下面几个步骤进行演化。 面向过程->面向对象+面向过程->面向对象(设计模式应用)->领域模型(DDD)