最近在采访中有人问我一个问题。
Problem:有一个类旨在分析代码的执行时间。类是这样的:
Class StopWatch {
long startTime;
long stopTime;
void start() {// set startTime}
void stop() { // set stopTime}
long getTime() {// return difference}
}
客户端需要创建 StopWatch 的实例并相应地调用方法。用户代码可能会扰乱方法的使用,从而导致意外结果。例如,start()、stop() 和 getTime() 调用应该按顺序进行。
必须“重新配置”此类,以防止用户弄乱顺序。
我建议如果在 start() 之前调用 stop() 则使用自定义异常,或者进行一些 if/else 检查,但面试官不满意。
有没有一种设计模式可以处理这些情况?
Edit:类成员和方法实现可以修改。
首先,实现自己的 Java 分析器是浪费时间,因为有好的分析器可用(也许这就是问题背后的意图)。
如果您想在编译时强制执行正确的方法顺序,则必须为链中的每个方法返回一些内容:
-
start()
必须返回一个WatchStopper
与停止方法。
- Then
WatchStopper.stop()
必须返回一个WatchResult
与getResult()
method.
当然,必须防止这些辅助类的外部构造以及访问其方法的其他方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)