使用面向对象编程,有些业务是需要以事务方式进行处理的
比如销售出库,需要对数据库进行:
1.保存出库单
2.生成财务凭证
3.冲减库存
简单伪码:
 出库单的保存方法
Save()
{
  保存出库单;
  生成财务凭证类实例,调用财务凭证类的保存方法保存财务凭证
  生成物资类实例,调用物质类实例冲减库存方法冲减库存
}
业务层原则上不直接操作数据库,是通过调用类提供的方法来实现,但需要保证操作的原子性,请教大家有没有好的方法,在不破坏面向对象设计原则的基础上保证事务操作的原子性

解决方案 »

  1.   

    对象设计阶段基本没考虑数据库问题,但现在要具体实现了,也就是要具体完成Save()方法的实现,类似的事务问题广泛存在,不知道有什么好的方法
      

  2.   

    既然在业务逻辑层有“原子操作”这个概念,那就应该设计一个类来表示事务,面向对象的设计原理是现实有什么概念,就设计什么样的类和它对应,假设这个类叫事物类:class BusinessTransationContext
    {
    }可以只公开构造函数,把数据库细节屏蔽掉,然后以下方法,都增加一个BusinessTransationContext的参数,
    1.保存出库单
    2.生成财务凭证
    3.冲减库存