繁体   English   中英

object 到 object 转换的设计模式是什么?

[英]What's the design pattern for object to object conversion?

问题很简单。 我需要将一个 bean 的内容转换为另一个具有不同 getter 和 setter 的 bean。 这样做的正确设计模式是什么?

我认为适配器模式主要是指签名或接口到另一个的映射。 不是对象之间的真实映射。

许多人谈论“映射器”,但我认为这不是一种设计模式。

那么,实际上是否存在将 object 映射到另一个的模式?

我不知道任何流行的对象映射设计模式。

我一直在使用Dozer框架将内容从一个bean传输到另一个bean。

它易于使用,并且易于与Spring集成。

请参阅: http//dozer.sourceforge.net/documentation/gettingstarted.html

相关模式是Assembler ,您可以在其中汇编一些给定另一个对象的对象。 由于编写汇编程序可能很繁琐且容易出错,因此您可以使用对象映射库为您完成工作。

您可以检查的一个对象映射器是ModelMapper ,它使用实际代码以安全的方式映射属性,字段和方法。

微软发布了一个很好的翻译模式。 本教程使用C ++编写,但转换为Java应该很容易。

这是一个教程: http//richhewlett.com/2010/06/11/a-useful-entity-translator-pattern-object-mapper-template/

一般的想法是你有一个通用的Translator抽象类,用你想要在它们之间转换的类类型进行参数化。 具体实现提供“到”和“从”转换方法。

该模式的优点是它不需要在转换中的两个类之间进行耦合。 它是在一个可重用的通用框架中实现的,它不会使用一次性转换解耦逻辑混乱您的代码。

一个伟大的“设计模式”是不将映射的对象彼此紧密耦合。 例如,复制构造函数意味着如果编辑源类,则还必须编辑目标类,这可能会导致大型项目中出现各种下游问题。 这样想吧。 非常频繁的映射是从UI数据结构到后端数据结构。 您应该可以废弃UI,而不必更改新UI的后端。 MVC设计模式经常用于此类工作。

我同意Javakid,你需要的不是设计模式,而是处理从一个bean到另一个bean的te转换的好解决方案。

如果你真的需要命名,那就应该像dto模式一样,因为你正在使用数据传输对象。 您可以使用访问者在构建转换后的bean树时检查所有bean树。

所以我建议使用框架或自己开发映射,这取决于图的大小。 Dozer是goode解决方案,但它一直使用Reflection API并隐藏映射代码。 所以你将无法轻松调试它,我也知道的Orika也很少有其他的运行时映射库。

但是,如果您希望能够查看代码,调试它并获得编译器反馈,您也可以使用Selma

最后,你还可以向这个线程报告一个解决方案的大图,以便在java中处理bean到bean的映射: java对象到对象映射的任何工具?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM