The database contains rows of types: TYPE1, TYPE2, TYP3, TYPEN
When user send request to my service and wait response I make next:
1) Call responseService for response:
@Override
public GetResponseResponse getResponse(GetResponseRequest request)
return responseService.getResponse(request);
}
2) In responseService prepare response:
@Override
@Transactional
public GetResponseResponse getResponse(GetResponseRequest request) {
//get data from DB
SmevMessage smevMessage = smevMessageService.findOneFinished(request.getP1(), request.getP2());
//validate
//create general response for all TYPES of response
GetResponseResponse getResponseResponse = new GetResponseResponse();
//get Builder for concrete resonse part
UnpResponseBuilder unpResponseBuilder = unpResponseBuilderContext.getResponseBuilder(smevMessage.getRequestType());
Element element = unpResponseBuilder.createResponse(smevMessage);
//set part to general response
getResponseResponse.setAny(element);
return getResponseResponse;
}
I generate general response but each response has specific part for each type. I use strategy design pattern for this.
I have some imlementation of this interface:
public interface UnpResponseBuilder {
Element createResponse(SmevMessage smevMessage);
}
and one bean - context:
public interface UnpResponseBuilderContext {
UnpResponseBuilder getResponseBuilder(SmevMessageType smevMessageType);
void setBuilder(SmevMessageType smevMessageType, UnpResponseBuilder bean);
}
My question: Is it right to use strategy for this task? Can something else be possible? If the strategy fits the right names for UnpResponseBuilderContext and UnpResponseBuilder ?
Aucun commentaire:
Enregistrer un commentaire