java - 封装常见的异常处理逻辑

标签 java oop object java-me encapsulation

我有一系列 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/

相关文章:

java - Android Surface类Surface.ROTATION_无法解析或不是字段

java - 视觉VM强制GC

oop - 对象之间的消息传递——如何引用目标对象?

oop - 面向对象的 TCL

java - 尝试多线程 URL 连接以减少加载时间

java - 将文件夹中的所有图像制作成IconImages

java - 构造函数和类之间的关系如何?

javascript - 如何从对象 : Javascript 中获取保存对象实例的变量名

javascript - 尽管有模 if 语句,For 循环仍推送到数组两次

javascript - 如何查找进入 Node.js 构造函数的参数数量