我有三个请求对象,名为Request1To,Request2To,Request3To。 我希望有一个方法可以接收任何这些TO并返回一个响应对象。 我目前已经实现了这样的
class Mapper{
public ResponseTo mapRequest1(Request1To){
}
public ResponseTo mapRequest2(Request2To){
}
public ResponseTo mapRequest3(Request3To){
}
}
有没有更好的方法来实现这一点,而不是为每个请求对象创建一个单独的方法?
答案 0 :(得分:4)
查看Dozer和modelmapper。它们都是将一个对象映射到另一个对象的出色工具。我知道Dozer与Spring集成在一起。在Dozer中,您的代码看起来像这样:
Mapper mapper = new DozerBeanMapper();
ResponseTo response = mapper.map(request, ResponseTo.class);
它非常强大且易于使用。
答案 1 :(得分:0)
不知道那些对象是什么样的......只需创建一个他们都实现的Request接口。然后mapRequest方法将接受接口而不是具体类。
答案 2 :(得分: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();
}
}