在我的应用程序中,我必须从ERP中获取数据。对于这个例子,让我们假设产品数据。
一些数据将来自我们的ERP提供的API,而有些数据将来自直接DB调用,因为API没有给我们提供所有所需的详细信息。
对于这种情况,我是否只需要使用单个存储库,并在存储库方法中从所需的位置获取数据?
如果我这样做,我担心的是,我将注入构造函数IApiService和数据库连接字符串,这取决于我要检索的数据,这可能是不必要的。
我是否创建了两个单独的存储库,比如ApiProductRepository和DatabaseProductRepository?
这里最好的方法的一些指导将是很棒的!
发布于 2017-07-18 04:54:29
我将创建存储库接口的两个独立实现,如ApiProductRepository和DatabaseProductRepository。每个实现都会为它不支持的方法抛出一个NotSupportedException。最后,创建一个ErpRepository,它接受ApiProductRepository和DatabaseProductRepository,并根据该方法调用适当的实现。
下面是描述我将如何设计解决方案的类图

编辑:我的回答是假设一些方法将由DB提供,另一些则由API提供。在OP澄清了模型的一些属性将从API中填充,而有些属性将由DB填充后,上面的设计没有很好地涵盖这种情况,我将使用更简单的设计:

https://softwareengineering.stackexchange.com/questions/352987
复制相似问题