我有一系列 Web 服务方法调用,它们都遵循以下格式。每个方法的唯一区别是 httpRequest.methodName()。有人能想出一种方法来封装通用逻辑吗?另请注意,我的环境是 J2ME。
public Response webserviceCall(Request request) {
HTTPRequest httpRequest = new HTTPRequest(new ConnectionProperties());
String errorMessage = "";
String errorCode = "";
try {
// the only thing different
httpRequest.methodName();
} catch (SDKException e) {
errorMessage = e.getMessage();
errorCode = e.getErrorCode();
}
Error error = new Error(errorMessage,errorCode);
return new Response(error);
}
最佳答案
一种替代方法是将该代码放入抽象类中,并将其更改为调用抽象方法(例如,将其命名为进程):
abstract class BaseWebService {
public abstract Response process(HTTPRequest request) throws SDKException;
public Response webserviceCall(Request request) {
HTTPRequest httpRequest = new HTTPRequest(new ConnectionProperties());
String errorMessage = "";
String errorCode = "";
try {
process(httpRequest);
} catch (SDKException e) {
errorMessage = e.getMessage();
errorCode = e.getErrorCode();
}
Error error = new Error(errorMessage,errorCode);
return new Response(error);
}
}
然后让每个服务扩展该类并根据需要实现 process
方法
class OneService extends BaseWebService {
Response process(HTTPRequest request) throws SDKException{
return request.methodName();
}
}
根据记录,这是 Template Method Pattern
关于java - 封装常见的异常处理逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11580045/