根据DDD定价计划规范

时间:2017-11-08 11:18:20

标签: domain-driven-design

我正在尝试根据定价计划规范在Web API中强制执行限制。

示例:

用户订阅了三个计划之一。每个计划允许为单个用户连接多个社交媒体配置文件。当用户请求连接新配置文件时,当前限制在web api处理程序中强制执行。

随着需要满足更多规范,它增加了api处理程序的复杂性,并且它需要抽象。我正在读一本关于领域驱动设计的书,并且遇到了SPECIFICATION模式。

问题是应该应用规范模式的地方。在应用程序层(api处理程序是)还是在域层?

如果它属于域图层,我应该在添加新配置文件时在存储库中强制执行规范吗?

    socialMediaProfileRepository.add(socialMediaProfile, specification);

1 个答案:

答案 0 :(得分:2)

该规则最有可能在聚合根中强制执行,例如UserAccount。如果UserAccount跟踪其链接MediaProfile并且PricingPlan定义了MediaProfileLinkageSpecification,则可能如下所示:

void linkMediaProfile(userAccountId, mediaProfileData) {
    userAccount = userAccountRepository.findById(userAccountId);
    mediaProfile = new MediaProfile(mediaProfileData);

    //throws if the related user profile linkage spec is not satisfied
    userAccount.linkMediaProfile(mediaProfile);
    userAccountRepository.save(userAccount);
}

enter image description here