У меня всегда есть проблема спроектировать класс, где правильный вызов метода был бы понятен программисту, и не было бы опасности выполнить какой-либо метод до того, как данные будут установлены переменными другим методом. Поэтому я обычно использую флаги и операторы If для безопасности:
class foo {
boolean isInitialised = FALSE;
boolean isSthDone = FALSE;
float importantData;
public void initialise {
...
isInitialised = TRUE;
}
public void doSth1 {
if (isInitialised) {
importantData = 2134234;
} ...
isSthDone = TRUE;
}
public void doSth2 {
if (isInitialised && isSthDone1) {
...
}
}
}
Этот тип дизайна не дает никакой подсказки, как должен использоваться алгоритм - какой метод должен быть выполнен первым, есть ли шаблон проектирования для этой проблемы?