1.领域模型:领域模型与数据模型不同,它表述的是领域中各个类及其之间的关系

    • 领域模型对象分为实体、值对象和服务

    2、实体:在领域驱动设计里面,实体是模型中需要区分个体的对象

    • DDD概念里面的实体就是包括实体数据(EF的Model)和行为的结合体

    3、值对象:通过对象属性值来识别的对象,它将多个相关属性组合为一个概念整体。
    (1)实体拥有唯一标识,而值对象没有;
    (2)实体允许变化,而值对象不允许变化;
    (3)判断两个实体相等的方法是判断实体的标识相等,而判断两个值对象相等的标准是值对象内部所有属性值相等;
    4、聚合(以及聚合根):聚合表示一组领域对象(包括实体和值对象),用来表述一个完整的领域概念
    聚合根是聚合所表述的领域概念的主体,外部对象需要访问聚合内的实体时,只能通过聚合根进行访问,而不能直接访问
    举例:电脑实体里的cpu,内存条(都是导航属性//实体) ,3者的组合为聚合,而电脑为聚合根
    5、领域服务: 领域模型主张富领域模式,领域逻辑尽量写在领域实体里面,也就是常说的“充血模式”,而对于业务逻辑,最好是以服务的形式提供。至于领域逻辑和业务逻辑的界定,这个要根据实际情况来定。总之,领域服务是用来处理那些领域模型里面不好定义或者某些可变逻辑的的时候才会用到。待验证!
    459756-20150920212004945-970858322.png
    表现层: UI呈现。
    应用层: 负责协调领域层的调用,向UI层提供需要的接口。
    领域层:定义领域实体和领域逻辑。
    基础设施层:一些通用的技术,比如AOP、MEF注入、通用的工具类、DTO模型层,这里为什么要有一个DTO模型层,DTO是用于UI展现用的纯数据Model,它不包含实体行为,是一种贫血的模型。
    //用作泛型约束,表示继承自该接口的为领域实体
    public interface IEntity
    {

    1. }<br />/// <summary><br /> /// 聚合根接口,用作泛型约束,约束领域实体为聚合根,表示实现了该接口的为聚合根实例,由于聚合根也是领域实体的一种,所以也要实现IEntity接口<br /> /// </summary><br /> public interface IAggregateRoot:IEntity<br /> {
    2. }<br /> /// <summary><br /> /// 聚合根的抽象实现类,定义聚合根的公共属性和行为<br /> /// </summary><br /> public abstract class AggregateRoot:IAggregateRoot<br /> {<br /> <br /> }