DDD领域模型:在智慧城市交通系统区分核心/通用/支撑域案例分析
智慧城市交通系统结合领域驱动设计(DDD)的改造,是一种以业务领域为核心的系统设计方法,它通过创建高度内聚、低耦合的软件模型来应对复杂的业务逻辑。以下是智慧城市交通系统结合DDD改造成果,提供给新手参考,而非标准,主要解释了核心域、通用域、支撑域的划分方式:
肖哥弹架构 跟大家“弹弹” DDD领域模型设计,需要代码关注
欢迎 点赞,点赞,点赞。
关注公号Solomon肖哥弹架构获取更多精彩内容
历史文章
领域驱动设计概念:
- 领域(Domain) :指的是软件系统所服务的业务领域。
- 子领域(Subdomain) :领域内的特定部分,具有自己的业务逻辑和模型。
- 界限上下文(Bounded Context) :定义了模型和语言的边界,是领域的一部分,拥有自己的模型和术语。
- 实体(Entity) :具有唯一标识和生命周期的对象。
- 值对象(Value Object) :描述领域概念,但没有唯一标识的��象。
- 聚合(Aggregate) :一组相关对象的集合,它们一起作为数据修改的单元。
- 领域服务(Domain Service) :执行领域逻辑但不自然属于任何实体或值对象的操作。
- 应用服务(Application Service) :协调领域对象来完成应用程序的任务。
- 领域事件(Domain Event) :领域中发生的有意义的事件,通常用于触发其他领域行为。
- 仓储(Repository) :提供对聚合根的查询和持久化机制。
- 工厂(Factory) :用于创建复杂的聚合或对象。
核心域图
通用域图
支撑域图
DDD项目工程结构
src/
|-- application/
| |-- features/ // 业务特性相关的应用层代码
| |-- services/ // 应用服务层
|-- domain/
| |-- core/ // 核心域
| | |-- accounting/ // 财务管理
| | |-- traffic_control/ // 交通控制
| | |-- public_transport/ // 公共交通
| | |-- road_maintenance/ // 道路维护
| | |-- safety_regulation/ // 安全规章
| | |-- toll_management/ // 收费管理
| | |-- vehicle_registration// 车辆注册
| | |-- incident_management// 事件管理
| | |-- environmental_monitoring// 环境监测
| |-- common/ // 通用域
| | |-- identity/ // 身份认证
| | |-- notification/ // 通知服务
| | |-- user_management/ // 用户管理
| | |-- access_control/ // 访问控制
| | |-- configuration/ // 配置管理
| | |-- logging/ // 日志记录
| | |-- messaging/ // 消息传递
| | |-- security/ // 安全服务
| | |-- audit/ // 审计服务
| |-- supporting/ // 支撑域
| | |-- data_analytics/ // 数据分析
| | |-- reporting/ // 报告
| | |-- integration/ // 系统集成
| | |-- backup/ // 数据备份
| | |-- infrastructure/ // 基础设施管理
|-- infrastructure/
| |-- persistence/ // 数据持久化
| | |-- repositories/ // 仓储接口实现
| |-- external_integrations/ // 外部系统集成
|-- presentation/
| |-- web/ // Web界面
| |-- api/ // API接口
|-- shared/
| |-- dtos/ // 数据传输对象
| |-- exceptions/ // 异常类
| |-- utils/ // 工具类
|-- tests/
|-- Main.java // 应用启动类
1、核心域划分
1.1 划分规则
核心域包含智慧城市交通管理系统中最关键的服务和功能,直接影响市民的出行体验和城市的交通运行效率。
1.2 核心域
- Accounting
- 子域:财务记录、预算管理、收入分配、支出跟踪、审计管理
- 界限上下文:财务管理上下文
- 实体:Account、Transaction
- 值对象:MonetaryValue、Date
- 聚合:FinancialAccount(聚合根)
- 领域服务:AccountingService
- 应用服务:FinanceApplicationService
- 领域事件:FundsTransactionRecorded
- 仓储:AccountingRepository
- 工厂:AccountCreationFactory
- Traffic Control
- 子域:信号控制、流量监控、违章检测、事故报告、紧急响应
- 界限上下文:城市交通控制上下文
- 实体:TrafficSignal、ViolationRecord
- 值对象:SignalTiming、TrafficVolume
- 聚合:TrafficSignalSystem(聚合根)
- 领域服务:TrafficControlService
- 应用服务:TrafficControlApplicationService
- 领域事件:TrafficSignalChangeRequested
- 仓储:TrafficSignalRepository
- 工厂:TrafficSignalCreationFactory
- Public Transport
- 子域:时刻表管理、车辆调度、票价系统、乘客信息、路线规划
- 界限上下文:公共交通服务上下文
- 实体:Schedule、TransportVehicle、FareSystem
- 值对象:TimeTable、RouteMap
- 聚合:PublicTransportNetwork(聚合根)
- 领域服务:PublicTransportService
- 应用服务:PublicTransportApplicationService
- 领域事件:ScheduleUpdated
- 仓储:PublicTransportRepository
- 工厂:TransportScheduleFactory
- Road Maintenance
- 子域:维修计划、施工管理、路况报告、资源分配
- 界限上下文:道路维护管理上下文
- 实体:MaintenancePlan、RoadConditionReport
- 值对象:MaintenanceResource、ConditionStatus
- 聚合:RoadMaintenanceManagement(聚合根)
- 领域服务:RoadMaintenanceService
- 应用服务:RoadMaintenanceApplicationService
- 领域事件:MaintenanceTaskCreated
- 仓储:MaintenanceRepository
- 工厂:MaintenancePlanFactory
- Safety Regulation
- 子域:规章制定、违章处理、安全教育、事故预防
- 界限上下文:交通安全规章上下文
- 实体:Regulation、ViolationCase
- 值对象:RegulationText、PenaltyType
- 聚合:SafetyRegulationSystem(聚合根)
- 领域服务:SafetyRegulationService
- 应用服务:SafetyRegulationApplicationService
- 领域事件:NewRegulationPublished
- 仓储:RegulationRepository
- 工厂:RegulationCreationFactory
- Toll Management
- 子域:收费点设置、收费率计算、收费记录、资金流动
- 界限上下文:收费管理系统上下文
- 实体:TollBooth、TollTransaction
- 值对象:TollRate、TransactionTime
- 聚合:TollManagementSystem(聚合根)
- 领域服务:TollManagementService
- 应用服务:TollManagementApplicationService
- 领域事件:TollRateAdjusted
- 仓储:TollBoothRepository
- 工厂:TollBoothFactory
- Vehicle Registration
- 子域:车辆登记、牌照管理、车辆检验、车主服务
- 界限上下文:车辆注册管理上下文
- 实体:VehicleRegistry、LicensePlate
- 值对象:VehicleDetails、InspectionStatus
- 聚合:VehicleRegistrationSystem(聚合根)
- 领域服务:VehicleRegistrationService
- 应用服务:VehicleRegistrationApplicationService
- 领域事件:VehicleRegistered
- 仓储:VehicleRepository
- 工厂:VehicleRegistrationFactory
- Incident Management
- 子域:事故报告、应急响应、事故分析、恢复计划
- 界限上下文:事故管理系统上下文
- 实体:IncidentReport、EmergencyResponse
- 值对象:IncidentType、ResponseTime
- 聚合:IncidentManagementSystem(聚合根)
- 领域服务:IncidentManagementService
- 应用服务:IncidentManagementApplicationService
- 领域事件:IncidentReported
- 仓储:IncidentRepository
- 工厂:IncidentReportFactory
- Environmental Monitoring
- 子域:排放监测、噪音监测、环境影响评估、污染控制
- 界限上下文:环境监测系统上下文
- 实体:EmissionMonitor、NoiseMonitor
- 值对象:EmissionReading、NoiseLevel
- 聚合:EnvironmentalMonitoringSystem(聚合根)
- 领域服务:EnvironmentalMonitoringService
- 应用服务:EnvironmentalMonitoringApplicationService
- 领域事件:PollutionLevelExceeded
- 仓储:EnvironmentalDataRepository
- 工厂:MonitorInstallationFactory
2、通用域划分
2.1 划分规则
通用域提供了整个系统运行所需的基础服务和功能,支持不同核心域的业务操作。
2.2 通用域
- Identity
- 子域:用户认证、权限验证、身份信息管理
- 界限上下文:身份管理系统上下文
- 实体:UserIdentity、AuthenticationRecord
- 值对象:PasswordHash、SecurityToken
- 聚合:UserAccount(聚合根)
- 领域服务:IdentityService
- 应用服务:IdentityApplicationService
- 领域事件:UserLoggedIn
- 仓储:UserRepository
- 工厂:UserCreationFactory
- Notification
- 子域:消息���知、邮件服务、短信服务
- 界限上下文:通知服务上下文
- 实体:NotificationChannel、MessageTemplate
- 值对象:NotificationContent、RecipientList
- 聚合:NotificationSystem(聚合根)
- 领域服务:NotificationService
- 应用服务:NotificationApplicationService
- 领域事件:MessageSent
- 仓储:NotificationRepository
- 工厂:NotificationChannelFactory
- User Management
- 子域:用户注册、用户资料、用户反馈
- 界限上下文:用户管理系统上下文
- 实体:UserProfile、UserFeedback
- 值对象:UserDetails、FeedbackContent
- 聚合:UserManagementSystem(聚合根)
- 领域服务:UserManagementService
- 应用服务:UserManagementApplicationService
- 领域事件:UserProfileUpdated
- 仓储:UserManagementRepository
- 工厂:UserProfileFactory
- Access Control
- 子域:角色管理、权限分配、访问日志
- 界限上下文:访问控制系统上下文
- 实体:Role、Permission
- 值对象:AccessLogEntry、ActionType
- 聚合:AccessControlList(聚合根)
- 领域服务:AccessControlService
- 应用服务:AccessControlApplicationService
- 领域事件:PermissionChanged
- 仓储:AccessControlRepository
- 工厂:RoleFactory
- Configuration
- 子域:系统配置、特性开关、参数管理
- 界限上下文:配置管理系统上下文
- 实体:ConfigurationProfile、FeatureToggle
- 值对象:ConfigValue、ToggleState
- 聚合:ConfigurationSetting(聚合根)
- 领域服务:ConfigurationService
- 应用服务:ConfigurationApplicationService
- 领域事件:ConfigurationUpdated
- 仓储:ConfigurationRepository
- 工厂:FeatureToggleFactory
- Logging
- 子域:日志记录、日志审计、日志分析
- 界限上下文:日志记录系统上下文
- 实体:LogEntry、LogArchive
- 值对象:LogSeverity、LogMessage
- 聚合:LoggingSystem(聚合根)
- 领域服务:LoggingService
- 应用服务:LoggingApplicationService
- 领域事件:LogRecorded
- 仓储:LogRepository
- 工厂:LogEntryFactory
- Messaging
- 子域:消息队列、事件发布、消息消费
- 界限上下文:消息传递系统上下文
- 实体:MessageQueue、EventSubscriber
- 值对象:MessagePayload、SubscriptionCriteria
- 聚合:MessagingSystem(聚合根)
- 领域服务:MessagingService
- 应用服务:MessagingApplicationService
- 领域事件:MessagePublished
- 仓储:MessageQueueRepository
- 工厂:EventSubscriberFactory
- Security
- 子域:数据加密、安全策略、入侵检测
- 界限上下文:安全管理系统上下文
- 实体:SecurityPolicy、IntrusionDetectionLog
- 值对象:EncryptionAlgorithm、PolicyRule
- 聚合:SecurityFramework(聚合根)
- 领域服务:SecurityService
- 应用服务:SecurityApplicationService
- 领域事件:SecurityBreachDetected
- 仓储:SecurityRepository
- 工厂:SecurityPolicyFactory
- Audit
- 子域:审计日志、审计分析、合规性检查
- 界限上下文:审计服务上下文
- 实体:AuditLog、ComplianceCheck
- 值对象:AuditEvent、CheckResult
- 聚合:AuditTrail(聚合根)
- 领域服务:AuditService
- 应用服务:AuditApplicationService
- 领域事件:ComplianceViolationDetected
- 仓储:AuditRepository
- 工厂:AuditLogFactory
3、支撑域划分
3.1 划分规则
支撑域为系统提供了非核心但必要的功能,以确保系统的稳定运行和可维护性。
3.2 支撑域
- Data Analytics
- 子域:数据挖掘、趋势分析、预测模型、决策支持
- 界限上下文:数据分析服务上下文
- 实体:DataAnalyticsModel、AnalyticalResult
- 值对象:DataSample、StatisticMeasure
- 聚合:AnalyticsEngine(聚合根)
- 领域服务:DataAnalyticsService
- 应用服务:DataAnalyticsApplicationService
- 领域事件:InsightGenerated
- 仓储:AnalyticsRepository
- 工厂:DataModelFactory
- Reporting
- 子域:报告生成、报告调度、报告分发、报告模板
- 界限上下文:报告服务上下文
- 实体:ReportGenerator、ReportInstance
- 值对象:ReportParameter、ReportFormat
- 聚合:ReportingSystem(聚合根)
- 领域服务:ReportService
- 应用服务:ReportingApplicationService
- 领域事件:ReportGenerated
- 仓储:ReportRepository
- 工厂:ReportInstanceFactory
- Integration
- 子域:第三方集成、API管理、数据交换、服务协调
- 界限上下文:集成服务上下文
- 实体:IntegrationEndpoint、APIDefinition
- 值对象:IntegrationEvent、APIRequest
- 聚合:IntegrationSystem(聚合根)
- 领域服务:IntegrationService
- 应用服务:IntegrationApplicationService
- 领域事件:APIRequestReceived
- 仓储:IntegrationRepository
- 工厂:EndpointFactory
- Backup
- 子域:数据备份、备份验证、灾难恢复、备份计划
- 界限上下文:数据备份服务上下文
- 实体:BackupService、BackupJob
- 值对象:BackupConfiguration、RestorePoint
- 聚合:BackupSystem(聚合根)
- 领域服务:BackupService
- 应用服务:BackupApplicationService
- 领域事件:BackupCompleted
- 仓储:BackupRepository
- 工厂:BackupJobFactory
- Infrastructure Management
- 子域:硬件管理、软件管理、资源监控、设施维护
- 界限上下文:基础设施管理系统上下文
- 实体:InfrastructureComponent、MaintenanceRecord
- 值对象:ResourceMetric、MaintenanceSchedule
- 聚合:InfrastructureManagementSystem(聚合根)
- 领域服务:InfrastructureManagementService
- 应用服务:InfrastructureManagementApplicationService
- 领域事件:ComponentFailureDetected
- 仓储:InfrastructureRepository
- 工厂:ComponentFactory
转载自:https://juejin.cn/post/7390902948614258700