工廠:從無到有創建對象(充滿 new),負責建構完整聚合。倉儲:持久化、重建、刪除。
每個實體擁有靜態 CreateEntity 方法,包含所有純量屬性參數:
public static Customer CreateCustomer(int id, Name name, Address billing, Address delivery,
string loginName, string loginPwd, DateTime dob) {
var c = new Customer();
c.Id = id;
c.Name = StructuralObject.VerifyComplexObjectIsNotNull(name, "Name");
c.BillingAddress = StructuralObject.VerifyComplexObjectIsNotNull(billing, "BillingAddress");
c.DeliveryAddress = StructuralObject.VerifyComplexObjectIsNotNull(delivery, "DeliveryAddress");
c.LoginName = loginName;
c.LoginPassword = loginPwd;
c.DayOfBirth = dob;
return c;
}
CreditCards 等集合屬性在使用時才初始化,符合聚合完整性與效能平衡。
工廠創建的聚合根,其集合屬性已正確初始化(非 null),保證聚合完整性。