以下旨在从Active Record模式和Repository模式中获得最佳效果的方法有什么缺点(例如在可测试性方面)?
每个持久对象都暴露了 save() 和 delete() 方法,但没有静态方法来加载自身,或者加载类似对象的列表:从上层加载是通过直接调用存储库来完成的,以避免持久对象中的静态方法。
“save()”和“delete()”方法只是外观,它们被委托给存储库。
可测试性真的是这种方法的一个问题吗?即使使用纯 Active Record 方法:是否存在数据库逻辑仅代表整个业务逻辑的一小部分的信息系统,并且在哪里模拟数据库访问会很有趣?
编辑:这种方法需要持久对象从实现“save()”和“delete()”的AbstractPersistentObject继承,它可以防止业务继承,但我读到最好避免业务继承,并用组合替换它,所以这可能是一个优势,而不是一个缺点......?
EDIT2:也许这篇文章会更好地解释我要解决的问题:http: //moleseyhill.com/blog/2009/07/13/active-record-verses-repository/