gpt4 book ai didi

java - 领域模型映射器应该是静态的吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:00:00 24 4
gpt4 key购买 nike

在我从事的许多项目中,我们经常有很多类将内容从一个领域模型映射到另一个领域模型。例如,从 WSDL 生成的模型到项目特定的模型。

例如

public class FooBarContentMapper {
public static Foo fromWsToDomain(FooType fooType) {
...
}
}

这也可以是一个非静态方法,服务层可以有一个映射器对象字段而不是调用静态方法:

public class FooBarContentMapper {
public Foo fromWsToDomain(FooType fooType) {
...
}
}

我发现这两种方式都用得很多,但是:

  • 哪一种解决方案更有效?
  • 是否有任何解决方案被认为是最佳实践?

最佳答案

"Is one of the solutions more efficient in any way?"

定义“高效”。如果“高效”指的是 CPU 时间和内存要求,那么“实例”方法永远不会比“静态”方法更有效;充其量,它可以静态方法一样高效,差异取决于对象实例化的频率,请阅读:您要实例化“实例”方法多少次。

"Are any of the solutions considered best practice?"

没有。这里的“最佳实践”是使您的设计符合您的要求。

  • 如果映射操作需要维护状态,例如依赖于其他服务/映射器/诸如此类的东西,那么使用“实例”方法更有意义。您不想进入的一件事是您的应用程序设计由相互依赖的单例组成的世界。使用“实例”方法,最好使用 Autowiring 工具,例如 Spring Framework 或 CDI。

  • 如果映射操作不需要状态,并且您非常有信心它将来永远不需要状态,那么请使用“静态”方法 - 除非您已经手头有一个 Autowiring 设施,在这种情况下,您不妨选择具有 Autowiring 的“实例”方法,并保证如果将来映射操作需要状态,您将不必更改设计很多。

关于java - 领域模型映射器应该是静态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23181735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com