面向对象的编程和事务

boh*_*nko 10 architecture oop

一点介绍:

类包含字段和方法(这次让我跳过属性).
字段表示类的状态.
方法描述了类的行为.

在设计良好的类中,如果类抛出异常,方法不会改变类的状态,对吧?(换句话说,无论发生什么,类的状态都不应该被破坏)

题:

是否有框架,设计模式,最佳实践或编程语言来调用事务样式中的一系列方法,以便任何类的状态都不会被更改(如果是异常),或者一切都成功了?

例如:

// 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
Run Code Online (Sandbox Code Playgroud)

当然,在MoveToState2()和中可能会发生异常MoveToFinalState().但是从这段代码中我希望类foo处于状态S1或S3.

这是一个简单的场景,涉及单个类,没有if,没有while,没有副作用,但我希望这个想法很清楚.

Boz*_*zho 6

看看Memento模式

memento模式是一种软件设计模式,它提供将对象恢复到其先前状态的能力(通过回滚撤消).


小智 5

不是最有效的方法,但您可以拥有一个代表您的交易数据的对象。开始事务时,复制数据并对其执行所有操作。当事务成功结束时,将副本移动到您的真实数据中——这可以使用指针来完成,因此不必太低效。