DDD 从文件中读取短信
DDD read text messages from file
我在属性文件中有我的文本验证消息。您会如何考虑从密钥中获取消息?由基础设施实现的领域服务接口?或者实施也会存在于域中吗?
在红皮书中,文本消息是字面的,例如传递给异常时。它们属于域。
但是如果我们处理 messages.properties 文件的键呢?你会怎么做?
谢谢。
邮件不太可能是域本身的一部分。考虑谁将推动对消息的更改。是领域专家还是 marketing/UX 人指出应该更改特定消息以更好地向客户传达含义?
例如,如果您必须创建一个新的 B2B 客户端,您是否预计某些消息必须更改?这是否意味着域已更改?
我建议让域中的异常尽可能独立于外部表示。因此,与其说 throw new PaymentProcessingException("Insufficient funds")
,不如考虑 throw new InsufficientFundsPaymentProcessingException()
。然后,您可以在应用程序的代表性边缘使用基础结构服务将特定异常转换为正确的消息。
我遇到了同样的问题:最后我混合使用了 Oleg 的回答和消息键。
我所做的是自定义异常 (DomainException),我在其中添加了一个带有消息键的自定义字段(最后它们是域异常,它们 could/must 是自定义的)。每个异常都有其自身的价值。在我处理异常的地方,我只是将代码添加为消息响应。稍后,在处理响应的地方,我要求服务翻译密钥。
如果(对我而言)显示效果不如看上去的好,欢迎提出建议。
我在属性文件中有我的文本验证消息。您会如何考虑从密钥中获取消息?由基础设施实现的领域服务接口?或者实施也会存在于域中吗?
在红皮书中,文本消息是字面的,例如传递给异常时。它们属于域。
但是如果我们处理 messages.properties 文件的键呢?你会怎么做?
谢谢。
邮件不太可能是域本身的一部分。考虑谁将推动对消息的更改。是领域专家还是 marketing/UX 人指出应该更改特定消息以更好地向客户传达含义?
例如,如果您必须创建一个新的 B2B 客户端,您是否预计某些消息必须更改?这是否意味着域已更改?
我建议让域中的异常尽可能独立于外部表示。因此,与其说 throw new PaymentProcessingException("Insufficient funds")
,不如考虑 throw new InsufficientFundsPaymentProcessingException()
。然后,您可以在应用程序的代表性边缘使用基础结构服务将特定异常转换为正确的消息。
我遇到了同样的问题:最后我混合使用了 Oleg 的回答和消息键。 我所做的是自定义异常 (DomainException),我在其中添加了一个带有消息键的自定义字段(最后它们是域异常,它们 could/must 是自定义的)。每个异常都有其自身的价值。在我处理异常的地方,我只是将代码添加为消息响应。稍后,在处理响应的地方,我要求服务翻译密钥。
如果(对我而言)显示效果不如看上去的好,欢迎提出建议。