一:DDD(Domain-Driven Design 领域驱动设计)
Domain:领域
Driven:驱动
Design:设计
由Eric Evans最先提出,目的是对软件所涉及到的领域进行建模,以应对系统规模过大时引起的软件复杂性的问题。整个过程大概是这样 ,开发团队和领域专家一起通过“通用语言(Ubiquitous Language)”去理解和消化领域知识,从领域知识中提取和划分为一个一个的子领域(核心子域、通过子域、支撑子域),并在子域上建立模式,在重复以上步骤,这样周而复始,构建出一套符合当前领域的模型。
二:架构
- spi:服务商使用
- api:外部接口使用
- 名词:基础中间件、流程编排、域能力、依赖层、服务、引擎、变现层、数据模型、领域模型
- 目录结构
baidu-domain-demo 领域层,包含核心域的业务规则抽象,是能够标准化的,不依赖于任何其他层的内容,抽象程度最高
baidu-domain-demo-client
|--service 接口
baidu-domain-demo-service (类以DomainService结尾)
|--单域服务实现
|--service 接口
|-- impl 接口实现
baidu-domain-demo-core (类以Repo结尾)
|--model 领域模型对象
|--extension 领域扩展点
|--manager 调dao接口做数据转换
baidu-domain-demo-dal (类以DAO结尾) 数据层,主要为数据库操作
|--dao 数据模型操作
|--do 数据库映射对象
|--query 只解决页面查询对象
project-demo 项目工程
|-- start 启动
|--start
|--Application 应用启动类
|-- common
|-- constants 各种常量
|-- message 消息相关
|-- util 工具
|-- integration 接口整合
|--xxSDK 各种sdk接口
|-- business demo 业务工程
|-- biz
|--api api
|--enums 枚举
|--message 消息
|--model DO->model
|--convert 对象转换
|--service 接口
|--impl 接口实现
|--spi spi
|--util 工具
|--xxx业务功能 业务功能
|-- engin 工程
|--api api
|--impl api实现
|--engin
|--xxx功能点
提炼领域知识:who、what、why
分析业务:结构化分解
抽象、应用、平台化、产品化
应用架构核心:抽象、复用、能力下层