首页 > 解决方案 > 处理 DDD 中的多态行为

问题描述

有一个Credential类包含一个数字的场景Proof。每种类型都Credential可以支持多种不同类型的Prooflike或从同一基类 ( ) 派生JWSProof的简单类型,并指定不同的行为来进行验证。RSASignatureProofProof

假设客户端发送包含 JWS 证明的凭证,在接收到数据后,控制器端点将其映射到 a Credential(最终可以在之后存储)并以某种方式识别其中包含的证明类型。它的任务是在处理(或保存)之前验证它,因此它应该使用相关类(JWSProof在这种情况下)中实现的逻辑,方法是在收集进行验证所需的加密材料后使用工厂构造它。

所以我的问题是:你认为这是正确的方法吗?我觉得JWSProof它有点没用,因为它的逻辑很容易变成一个静态函数。您将如何建模这种情况以及存储所有这些类型的对象/类需要多少存储库?

标签: oopinheritancepolymorphismdomain-driven-designrepository-pattern

解决方案


对于不需要更改的纯计算逻辑(我建议证明算法就是这样:它可能没有从验证到验证的状态),源代码(例如静态函数)是正确的存储库。

然后,您ProofRepository基本上只是从证明的标识符(例如,类似的字符串"JWSProof")到静态函数的映射(不同的语言将使建模更容易或更难,特别是如果证明实现需要采用不同的参数)。

出于同样的原因,您可能拥有一个存储特定证明所需的加密材料的存储库。


推荐阅读