oop - 处理 DDD 中的多态行为
问题描述
有一个Credential
类包含一个数字的场景Proof
。每种类型都Credential
可以支持多种不同类型的Proof
like或从同一基类 ( ) 派生JWSProof
的简单类型,并指定不同的行为来进行验证。RSASignatureProof
Proof
假设客户端发送包含 JWS 证明的凭证,在接收到数据后,控制器端点将其映射到 a Credential
(最终可以在之后存储)并以某种方式识别其中包含的证明类型。它的任务是在处理(或保存)之前验证它,因此它应该使用相关类(JWSProof
在这种情况下)中实现的逻辑,方法是在收集进行验证所需的加密材料后使用工厂构造它。
所以我的问题是:你认为这是正确的方法吗?我觉得JWSProof
它有点没用,因为它的逻辑很容易变成一个静态函数。您将如何建模这种情况以及存储所有这些类型的对象/类需要多少存储库?
解决方案
对于不需要更改的纯计算逻辑(我建议证明算法就是这样:它可能没有从验证到验证的状态),源代码(例如静态函数)是正确的存储库。
然后,您ProofRepository
基本上只是从证明的标识符(例如,类似的字符串"JWSProof"
)到静态函数的映射(不同的语言将使建模更容易或更难,特别是如果证明实现需要采用不同的参数)。
出于同样的原因,您可能拥有一个存储特定证明所需的加密材料的存储库。
推荐阅读
- c# - Azure 队列中的消息文本已编码,如何删除此编码?
- typescript - 尝试发送响应时出现 Express 错误的 TS
- sql - 用as()是什么意思?
- c++ - Visual Studio 有时会加载符号,有时不会
- swiftui - 这是 iOS14 中预期的 @State var 行为还是一个错误?
- python - 查找 DataFrame 中是否存在特定值。如果不是,请将其存储在新的 DataFrame 中
- javascript - 仅接受来自一个 div 的字段值的值来自多个 div 的字段值
- python - 我应该如何更改随机输入以启用绝对随机化?
- javascript - 仅替换字符串单词中的几个字符
- php - php curl 无法连接到 xxx 端口 5001:连接被拒绝