2012-12-29 151 views
1

我有三个请求对象,分别叫Request1To,Request2To,Request3To。 我想有一个方法可以接受任何这些TO并返回一个响应对象。 我现在有这样的在java中实现映射器的最佳方式是什么?

class Mapper{ 
    public ResponseTo mapRequest1(Request1To){ 

     } 

    public ResponseTo mapRequest2(Request2To){ 

     } 

    public ResponseTo mapRequest3(Request3To){ 

     } 

} 

实行的是有没有更好的办法做到这一点,而不是创建为每个请求对象的一个​​单独的方法?

回答

0

不知道这些对象是什么样的东西......只是让它们都实现一个请求接口。然后mapRequest方法将取代具体的类接口。

+0

对于每个请求对象的映射是不同的。我需要在mapRequest方法内部有一个if条件来查找实例类型是什么,然后做映射,我不喜欢。 – mohanaki

0
public interface CustomRequest { 


public ResponseTo convertResponseTo(); 


} 


public class Request1To implements CustomRequest{ 

    public ResponseTo convertResponseTo(){ 

    // do the logic and return response 

    } 

} 


    public class Mapper { 


    public ResponseTo mapRequest(CustomRequest request){ 

     return request.convertResponseTo(); 

    } 
} 
+0

我不想链接条件。 – mohanaki

+0

我改变了我的答案检查它 – Suranga

+0

我需要在transferobject中有我不想做的映射逻辑。由于传输对象中的映射逻辑将它绑定到特定的响应类型。 – mohanaki

2

看看Dozermodelmapper。它们都是将一个对象映射到另一个对象的优秀工具。我知道Dozer与Spring集成。在推土机中,您的代码将如下所示:

Mapper mapper = new DozerBeanMapper(); 
ResponseTo response = mapper.map(request, ResponseTo.class); 

它非常强大且非常易于使用。

相关问题