2012-10-25 67 views
11

基本上,我的应用程序中有许多对象,我必须在发送请求之前将它们转换为另一个第三方对象。接收到响应后,我必须将这些对象转换回由我的应用程序支持的对象。将一个模型转换为另一个模型的设计模式

我可以使用什么模式将一个模型对象转换为另一个模型对象?

+1

http://stackoverflow.com/questions/1236667/object-conversion-pattern –

回答

3

无论适配器或门面模式应该解决您的问题:

适配器: http://www.youtube.com/watch?v=TriX8OiEhOU

门面: http://www.youtube.com/watch?v=WLjvNpP6yeQ

+8

Facade模式为何会解决他的问题?这种模式不是用来[“为更多的代码提供简化的接口”](http://en.wikipedia.org/wiki/Facade_pattern)?我不认为你应该把转换逻辑放在门面。 –

+0

适配器也是一种矫枉过正,只有在基本模型中需要更改数据以反映新模型时才应使用适配器。一个转换器班也可以帮助分离责任。 – danidacar

7

我不认为有这个特定的模式,但你只需要简单,它接受一个对象,并返回一个“转换器”或“翻译”类另:

MyObject convert(ThirdPartyObject obj); 
ThirdPartyObject convert(MyObject obj); 
1

这是一个有点难以确定对象的背景,但是看看汇编模式,虽然不是技术上的设计模式。汇编程序类用于从一个对象映射到另一个对象,特别是当一个对象是一个DTO(有点像您的响应对象)到一个Domain对象时。 Dozer框架可以帮助您完成这些繁琐的转换。

1

适配器立面是结构模式。您没有任何图案迎合对象转换

关于创作模式的前端,Builder是您可以想到的一种模式。

一般生成器模式用于建立具有强制参数和可选参数的对象。但是你可以通过建立必要的对象来微调它。

你也可以无模式地解决问题。您可以使用对象组合编写您自己的方法来转换对象

看一看相关SE问题与代码示例:

How to prune an object of some of its fields in Java?

相关问题