我必须在类似于资源库的类上实现操作,该类需要维护本地数据库和外部(第三方)API之间的一致性。其中一些API可能仅为某些操作提供部分成功/部分失败语义(即非原子)。但是,我想确保我实现的操作确实具有原子/事务语义,例如如果对API的请求成功,我只更新我的数据库,并且该外部服务中的任何内容也会在数据库中复制。
是否有任何有用的模式可以解决这个问题,或者有关如何解决这类问题的其他指示?
谢谢!
答案 0 :(得分:1)
Command模式似乎是一种封装可以回滚的操作的好方法,并为这些操作提供统一的接口。
然后,工作单元模式可用于定义涉及多个命令的事务,如果其中任何一个命令失败,则会回滚每个命令。