Есть вопрос, который недавно был задан мне в интервью.
Проблема. Существует класс, предназначенный для профилирования времени выполнения кода. Класс похож:
Class StopWatch {
long startTime;
long stopTime;
void start() {// set startTime}
void stop() { // set stopTime}
long getTime() {// return difference}
}
Ожидается, что клиент создаст экземпляр StopWatch и вызовет методы. Пользовательский код может испортить использование методов, приводящих к неожиданным результатам. Ex, start(), stop() и getTime() должны быть в порядке.
Этот класс должен быть "переконфигурирован", чтобы пользователь не мог помешать последовательности.
Я предложил использовать настраиваемое исключение, если stop() вызывается перед запуском() или выполняет некоторые проверки if/else, но интервьюер не был удовлетворен.
Есть ли шаблон проектирования для обработки таких ситуаций?
Изменить: можно модифицировать элементы классов и реализации методов.