一尘不染

Java设计问题:强制方法调用序列

java

最近有一次采访中我问了一个问题。

问题 :有一个用于描述代码执行时间的类。该类就像:

Class StopWatch {

    long startTime;
    long stopTime;

    void start() {// set startTime}
    void stop() { // set stopTime}
    long getTime() {// return difference}

}

期望客户端创建StopWatch的实例并相应地调用方法。用户代码可能会使方法的使用混乱,从而导致意外结果。Ex,start(),stop()和getTime()调用应该有序。

此类必须“重新配置”,以便可以防止用户弄乱序列。

我建议如果在start()之前调用stop()或进行一些if / else检查,但是访问者不满意,则使用自定义异常。

是否有一种设计模式可以处理这种情况?

编辑 :可以修改类成员和方法的实现。


阅读 249

收藏
2020-12-03

共1个答案

一尘不染

我们通常使用来自Apache Commons
StopWatch的StopWatch来
检查模式的提供方式。

当秒表状态错误时,将抛出IllegalStateException。

public void stop()

Stop the stopwatch.

This method ends a new timing session, allowing the time to be retrieved.

Throws:
    IllegalStateException - if the StopWatch is not running.

直截了当。

2020-12-03