我有以下情况。用户可以将多种对象类型(交易,发票等)导出到外部会计系统。 导出算法有步骤:
所有对象类型的算法都相同,但必须处理一些重要的差异:
我考虑了一些解决方案:
问题:
是否为每个对象创建一个单独的导出算法类型代码重复?
也许所有这些都应该被视为单独的用例?
如果它是重复的,那么我应该考虑哪些技术来避免它?
我的第一次实施说明:
在第一种方法中,我定义了一个可导出的抽象,但我对它并不满意。每个对象的有效负载完全不同。 一个Exportable接口只定义了一个方法getId,它用于注册该对象被导出(并且由于它不会再次导出)。 为此目的,抽象很好,但问题转移到了exportService,它必须检查具体实例以选择DTO映射器和端点。所以exportService打破了SOLID。
答案 0 :(得分:0)
您上面描述的所有内容都不是特定于域的逻辑(实际上您甚至没有在您的问题中提到问题域),因此我认为它不属于域驱动设计。因为它不是特定于域的逻辑,所以我不会过多担心代码重复,特别是考虑到解决方案似乎并不明显。
保持简单,并分别写出每个用例。如果您发现存在易于重构的公共代码,请在一切顺利完成之后执行此操作。在明显需要之前,不要过度思考或添加模式。