Объектно-ориентированное программирование и транзакции

Небольшое вступление:

Класс содержит поля и методы (на этот раз я пропущу свойства).

Поля представляют собойгосударство класса.

Методы описанияповедение класса.

В хорошо разработанном классе метод выигрализменить классs состояние, если оно выдает исключение, верно? (Другими словами, что бы ни случилось, классГосударство не должнобыть испорченным)

Вопрос:

Есть ли фреймворк, шаблон проектирования, передовой опыт или язык программирования для вызова последовательности методов в транзакционном стиле, чтобы любой класссостояние неизменить (в случае исключения), или все успешно?

Например.:

// the class foo is now in the state S1
foo.MoveToState2();
// it is now (supposed to be) in the state S2
foo.MoveToFinalState();
// it is now (supposed to be) in the state, namely, S3

Конечно, исключение может возникнуть как вMoveToState2() а такжеMoveToFinalState(), Но из этого блока кода я хочу классfoo быть в состоянии S1 или S3.

Это простой сценарий с участием одного класса, нетifс нетwhiles, никаких побочных эффектов, но я надеюсь, что идея ясна.

Ответы на вопрос(10)

Ваш ответ на вопрос