У меня есть вопрос о развитии объекта (и его состояния) после завершения некоторой последовательности методов. У меня возникли проблемы с формулировкой того, что я имею в виду, поэтому мне, возможно, потребуется прояснить вопрос на основе обратной связи.
Рассмотрим объект с именем Классификатор . Он имеет следующие методы:
void initialise()
void populateTrainingSet(TrainingSet t)
void pupulateTestingSet(TestingSet t)
void train()
void test()
Result predict(Instance i)
Моя проблема в том, что эти методы нужно вызывать в определенном порядке. Кроме того, некоторые методы недопустимы до тех пор, пока не будет вызван предыдущий метод, а некоторые методы недопустимы после вызова метода. Например, было бы недопустимо вызывать предикат () до вызова test (), и было бы недопустимо вызывать train () после вызова test ().
Мой подход до сих пор состоял в том, чтобы поддерживать закрытое перечисление, которое представляет текущее состояние объекта:
private static enum STATE{ NEW, TRAINED, TESTED, READY};
Но это кажется немного слизистым. Есть ли шаблон дизайна для такого типа проблемы? Может быть, что-то связано с методом шаблона.