我为我的数据库表创建了 DAO。在 SAP ABAP 中,您可以拥有包含与语言相关的文本的附加文本表(语言代码是键的一部分)。目前,我在程序开始时创建 DAO 实例(依赖注入),并向它们传递一个语言键,该语言键有效地将 DAO 绑定到特定语言,让 DAO 仅从该特定语言读取文本。
然而,在程序的后期,我需要从另一种语言中获取文本。我该如何应对?
在 DAO 的 crud 和 find-by 方法中明确包含语言键?这将要求 DAO 的任何客户端也公开其方法的语言密钥,并正确地将其传递给有味道的 DAO。例如
method read(id, languageCode) returns <thing>
。此外,我希望域对象对 DAO/基础设施垃圾一无所知。为 DAO 本身提供一个语言感知接口,允许我创建另一个绑定到不同语言(工厂)的 DAO 实例。这需要我显式访问 DAO,否则这些 DAO 也很隐蔽。例如
method createWithLang(langCode) returns <DAO>
使域对象具有语言意识,这意味着依赖于语言的方法显式地公开语言代码。但是域对象已经需要知道所有语言的所有文本才能返回正确的文本,或者它们需要直接访问某些 DAO 才能重新加载正确的文本。然后,懒惰地这样做是一个额外的挑战(关于 ABAP OO)。
每一个建议都非常感谢