主要将领域层从系统中隔离出来;这样有利于集中修改,也有利于业务知识的传递和学习;php
layered architecture目前比较主流的分层模式:前端
-应用层 定义软件要完成的任务,调用领域层来完成任务;但不要涉及具体的业务规则和知识;要尽可能简单;java
领域层 表达业务概念,业务规则,业务状态信息;是软件的核心架构
基础设施层 为上面三层提供技术支持;如提供消息服务,持久化服务,通讯服务框架
如今大部分使用架构框架来时实现基础设施层.侵入性较强dom
被认为是反模型;用ui图来表达业务逻辑.适合小项目,好比php的项目,但不适合复杂的业务系统.;学习
关联:现实中的关联很是多,然须要限制它,以减小建模复杂度;向业务方向限制;如将多对多降级为一对多;ui
设计中的entity,service与java中的概念不一样;设计
entity: 表示某种具备连续性和标志的事物对象;某个事物的属性可能发生变化,用标志来区分事物.对象
value object :表示某种状态属性;这类事物原则上是不可变的,不须要标志;能够进行共享或复用
service:有些领域概念是动做或活动;当一个动做涉及几个entity时,就须要将它单独放在service中;中等粒度的service有时是区分领域最好的形式
module是更粗粒度的结构;模块应该是高内聚,低耦合的;将一组有关联的entity,vo,service聚合在一块儿;在聚合中体现出领域驱动设计;体现出domain层;
目前面向对象的范式最流行;但包含大量数学与逻辑推理领域则不适用面向对象,它们自己就是面向过程. 设计范式不一样于实现范式;
聚合,工厂,仓库;aggregate,factory,repository
指定一个聚合根entity,在聚合范围内,全部的操做都要经过聚合根实现,全部的固定规则都必须实现;实现一个小范围内的闭环;
根,边界,固定规则;
提供新建或复制entity是领域的功能;工厂方法或工厂服务,构造器建立三种;
工厂方法:抽象工厂模式,构造器模式,建立要知足固定规则;
repository主要负责持久化工做,与factory结合,完成对象的新增和重建;