首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个用例的有效设计是什么?

这个用例的有效设计是什么?
EN

Stack Overflow用户
提问于 2014-07-25 03:29:05
回答 3查看 65关注 0票数 1

我有一个用例,在这个用例中,我在特定方法上启动一个计时器,以查看它是否需要超过x秒。如果是这样,我将在日志中记录一个致命的信息,如下所示。

代码语言:javascript
复制
private boolean isDpxTimedOut(StopWatch stopWatch)
{
       stopWatch.stop();
       long elapsedTime = stopWatch.getNanoTime();
       Double elapsedTimeInSeconds = elapsedTime/NANO_DIVISOR;
       return (elapsedTimeInSeconds >= DPX_TIMEOUT_VALUE);
}
public void callDPX()
{
 try{
 StopWatch stopWatch = new StopWatch();
 //body of the method
 }
 catch(Exception e)
 {  
    e.printStackTrace();
 }
  finally {
              //putting a check here to see if DPX timed out and then logging a FATAL.
           if(isDpxTimedOut(stopWatch))
           {
                  log.fatal("[DPX TIMEOUT] The request took more than 12 seconds.");
           }

}

现在我有了一个用例,我必须将这个stoip监视放在不同类中的多个方法上。我该怎么设计呢?不同类的超时将是不同的,应该从Config文件中读取。有人能为这个用例指出一个好的设计吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-25 04:02:16

尝试一些类似于:

代码语言:javascript
复制
class Executor {
    public static void execAndLogOnTimeout(Runnable runnable, long timeout) {
        // Save start time
        runnable.run();
        // Save end time
        // If time taken > timeout: log
    }
}

Executor.execAndLogOnTimeout(new Runnable() {
    @Override public void run() {
        // The code to be clocked
    }
}, Config.timeoutForThisPieceOfCode());

另一种选择是围绕建议使用AOP。

票数 0
EN

Stack Overflow用户

发布于 2014-07-25 03:44:58

首先,将isDpxTimedOut、callDPX方法更改为以时间为参数,以便可以从配置文件传递不同的数字。

设计应该是..。创建一个基类并将您的方法放在那里。您编写的任何类都扩展了这个基类。在类中,如果要调用超时值方法,首先从配置文件中获取相应的时间,然后使用时间参数调用callDPX()。

票数 0
EN

Stack Overflow用户

发布于 2014-07-25 03:53:02

在这种情况下,代理模式可以帮助您。

代理是一种常用的设计模式。简单地说,代理是一个看起来像另一个对象的对象,但是在场景后面添加了特殊的功能。

最好用GOF -设计模式来解释

代理模式

这是一种结构模式,因为它定义了在类或实体之间创建关系的方式。代理设计模式用于提供代理项或占位符对象,该对象引用基础对象。 通过充当传递实体或占位符对象,允许对象级访问控制。

春季AOP使用相同的设计模式。

了解更多..。

只需包装对象,在实际对象调用之前和之后添加新功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24947561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档