最近有一次采访中我问了一个问题。
问题 :有一个用于描述代码执行时间的类。该类就像:
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检查,但是访问者不满意,则使用自定义异常。
是否有一种设计模式可以处理这种情况?
编辑 :可以修改类成员和方法的实现。
我们通常使用来自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.
直截了当。