Request1To、Request2To、Request3Toという3つのリクエストオブジェクトがあります。 これらのTOのいずれかを取り込んで応答オブジェクトを返すようなメソッドを作りたい 私は現在このように実装しました
class Mapper{
public ResponseTo mapRequest1(Request1To){
}
public ResponseTo mapRequest2(Request2To){
}
public ResponseTo mapRequest3(Request3To){
}
}
リクエストオブジェクトごとに別々のメソッドを作成するのではなく、これを行うより良い方法はありますか
回答:
回答№1の場合は3を見てみましょう ドーザー そして モデルマッパー。どちらも、あるオブジェクトを別のオブジェクトにマッピングするための優れたツールです。 DozerはSpringと統合されています。 Dozerでは、コードは次のようになります。
Mapper mapper = new DozerBeanMapper();
ResponseTo response = mapper.map(request, ResponseTo.class);
それは非常に強力で非常に使いやすいです。
回答№2の場合は0
それらのオブジェクトがどのようなものであるかについてもっと知らなくても...それらがすべて実装しているRequestインターフェースを作るだけです。その後、mapRequestメソッドは具象クラスの代わりにインターフェースを受け取ります。
回答№3の場合は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();
}
}