使存储库持久性无知的优点/缺点是什么?

use*_*769 5 design-patterns domain-driven-design repository-pattern

通常,存储库应了解我们决定使用哪个数据库的实现细节。

a)但是使存储库持久性忽略也有什么优点/缺点(即,不知道哪种持久性介质用于存储数据)。我能想到的唯一优点是,现在可以使用相同的存储库实现,而不管持久存储在哪种介质数据上

b)假设存储库被设置为“ 持久性”,则存储库接口及其实现都应驻留在域程序集中

谢谢

小智 2

嗯,使用存储库模式的全部目的是将域逻辑与持久性逻辑分开,因此,您可以对不同的数据存储使用相同的域实现。因此,存储库的实现必然在某种程度上依赖于数据库的实现,这似乎是很自然的。

a)我认为主要的缺点是性能。存储库库越抽象,您就需要设计和实现更多的抽象级别,涵盖更多的案例。然而,一个专门的存储库会表现得更好,因为它了解其底层存储的全部功能。

另一个缺点是开发和维护成本。我认为这些缺点超过了拥有完全通用结构的任何优点......

b) 对于较小的项目,我的答案是“也许”,但对于所有其他项目,我的答案是“不”。它与执着无明没有任何关系。我始终尝试遵循的最佳实践是关注点分离。如果他们尝试做不同的事情,那就将他们分开。它会让你以后免于很多噩梦。

还有什么想法吗 | 想法,我也愿意听听:)