之前的文章中讲到了entity, value object, repository等domain object。这次终于能将一些相对比较轻松的话题了
Factory
这个设计模式中应该有一个叫工厂模式,ddd可能也是借鉴了它。
ddd比较注重数据的完整性。
有关数据完整性,百度了一下,结果
存储在数据库中的所有数据值均正确的状态
复习一下,ddd中有aggregate(集合)这个概念,集合中的entity, value有一定的必须保持恒定不变的状态。而ddd中的数据完整性指的就是这中概念。
比如有一个aggregate叫Person。其中有两条腿Leg(ValueObject)
public class Person {
List<Leg> legs;
}
那数据完整性观点来讲,无论我们调用什么方法,绝对不能出现下面这种情况
legs.size() != 2
另外ddd提倡充血模式。所以比如说我们创建一个entity的类之后,不会再调用一大堆setter来初始化。entity被创建了,它的状态时必须是符合业务逻辑要求,而不是需要进一步加工的。听起来很绕口。来说个实际例子吧。
比如我们要做一个购物网站,需要一个商品的类。Commodity。下面的贫血模型是ddd所反对的。
@Setter
@Getter
public class Commodity{
private CommodityId id;
private Category category;
private String commodityName;
private String description;
private Date dateCreated;
private Double price;
...
}
所以一般情况,自然我们必须在构造方法中对类进行初始化(原本很自然而然的做法,构造方法当然是来构造类的,但因为贫血模型的流行,用含参数的构造方法构造完整的类反而变成了非主流。)
public class Commodity{
private CommodityId id;
private Category category;
private S