我正在尝试根据定价计划规范在Web API中强制执行限制。
示例:
用户订阅了三个计划之一。每个计划允许为单个用户连接多个社交媒体配置文件。当用户请求连接新配置文件时,当前限制在web api处理程序中强制执行。
随着需要满足更多规范,它增加了api处理程序的复杂性,并且它需要抽象。我正在读一本关于领域驱动设计的书,并且遇到了SPECIFICATION模式。
问题是应该应用规范模式的地方。在应用程序层(api处理程序是)还是在域层?
如果它属于域图层,我应该在添加新配置文件时在存储库中强制执行规范吗?
socialMediaProfileRepository.add(socialMediaProfile, specification);
答案 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);
}