鼎鼎知识库
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

28.领域设计.md 7.1KB

领域设计

  • 所有的领域应该有一个抽象基类,而且是一个泛型

    public abstract class Entity<T>
    {
    public T Id{get;protected set;}
    }
    
  • DDD中有一个很重要的概念,叫作Object Value Type。会把一个Aggregate里的对象类型看作是值类型。这样做一方面是减少Aggregate对关系的依赖,一方面可以很好判断Aggregage的状态。同样也是一个泛型抽象基类,如果一个Object类型的对象想要被当作值类型处理,那就继承这个泛型抽象基类。

  • object value type怎么理解

    • 值对象 主要描述领域的某个方面而本身没有概念表示的对象。
    • 主要是为了方便比较领域对象。
    • 以前 public class Order { public List<OrderLine> Lines{get;set;} public Address Address{get;set;} }
    • 实际上Order里面包含了对象类型,是很难比较的
    • 现在 public class OrderLine:ValueObject<OrderLine>, public class Address:ValueObject<Address>
    • 这就把原来是引用类型的对象OrderLine和Address转换成值类型了,这就减少了对象之间的相互依赖。 ``` public abstract class ValueObject where T : ValueObject { ///

      /// 获取子类需要比较的属性 /// 抽象方法,通过子类override实现 /// protected abstract IEnumerable