DDD(领域驱动设计)核心问题是如何将业务领域概念映射到软件工程当中。推翻了软件从数据层开始设计的旧习惯,强调领域模型在软件中发挥的作用注重把企业内部复杂的业务流程转化为软件。
贫血性模型(单一职责原则体现出的模型,比如在实体只表示对象的属性和多个对象的关系,而动作由服务体现)
充血性模型(实体中也体现对象的动作)。
所谓的领域驱动设计与传统的MVC模型最大的区别是有一个领域业务模型类(比如处理积分、处理优惠、处理运费、处理总金额、处理分发、处理消息)来处理这个领域的业务逻辑,而service只处理实体的动作不处理业务逻辑。即在服务层之上有业务逻辑层。在传统的MVC模型中 Controller负责所有动作实现和业务逻辑实现。
DTO(data transfer object 数据传输对象) DTO封装的是返回客户端的数据,他数据数据传输的载体。如果是一般的MVC开发 DTO的表现形式可能会直接是MODEL 如果是分布式系统需要从系统性能和隐藏业务逻辑出发着想,直接返回mode将会暴露太多细节。(在SOA中还应该考虑粗粒度的传输性能问题)