前端主导:先有是app,小程序,前端依靠模块化,后端就需要根据模块化给前端提供数据。
业务逻辑为主导:(先有用户的行为逻辑)DDD设计是根据业务逻辑,一切以中间逻辑为主,不太关心用户的界面,和后端数据库的数据存储,关心的是用户的行为,抽象成一个个小逻辑模块或者单元,关心的是这个小单元的完整性和事务性,根据这个完整的逻辑去驱动前端的展现和数据的存储
数据主导:uml和er图,以数据表为单元,考虑的主要点是,数据怎么存储,数据该怎么查询
产品导向:用户的行为逻辑,抽象成单元
适合中大型项目:已经拆分成微服务的项目,包含很多领域,根据现有的微服务,拆分出核心领域,通用领域,支撑域。
**api经济(现有逻辑直接调用api),中台:**包装好的api,关注核心领域,外包非核心域。
比如:述职报告,年终总结,使用uml,传统的技术,领导一看老三样,会觉得你没新意,没有进步空间。所以使用DDD,或者新的技术会觉得你。
包装,对很简单的东西,进行包装显得会有逻辑性和新意,比如,微服务,如果使用老三样,显得不够新意,可以使用
1,DDD设计主要分为两个过程:战略设计与战术设计。
面向对象: OOAD(现实抽象出对象)和OOP
2,OOAD没有战略设计,DDD通过战略设计划分领域和模型;
3,OOAD仅用对象描述世界**(1,不关心系统划分的方法,导致整个系统柔和在一起,得到的是多个子领域的模型柔和到一起的模型,2,导致对象与对象之间的关系非常复杂也无法进行控制, 1,DDD在设计会进行战略设计,对问题和系统进行拆分成不同的子领域,建立的模型对象更容易控制( 2,面向对象建立的对象模型,所有的事物都是对象,描述的是对象与对象之间的关系,而ddd描述的更加细致,对象进一步细分,实体对象和值对象,聚合和聚合根的概念,这样在将模型转换成代码过程中更清晰))**,DDD的描述更加细致,更贴近与真实世界。
共同点:两者都是建模和设计思想,部分建模方法(设计模式)和工具都可复用。面向对象的建模方法和工具,在DDD是可以复用(用例分析,类图,序列图等待)
系统划分更细-》对象进一步划分-》模型转换成代码实现更清晰
2,面向对象设计仅仅是将对象进行抽象成实体(可以称为贫血模式)
DDD****设计是将对象抽象成实体和行为(充血模式)
充血模型DDD开发模式重domain轻service,而贫血模型重service轻BO