问题描述
我有一个Customer
班。它的专用字段是CustomerDAO
接口,例如myCustomer.getAge()
调用数据库访问方法。 CustomerDAO从应用程序的专用数据库中检索数据。
问题在于,Customer
的某些字段现在必须从第三方Web服务中检索。逻辑上调用某些Web服务不属于CustomerDAO
(它是用于与单个数据库通信的,对吗?)。
在这种情况下,行业推荐的方法是什么?
我是否要向CustomerWebServiceDAO
添加另一个字段Customer
(作为接口)?我的Customer
将在内部使用两个不同的实例(CustomerDAO
和CustomerWebServiceDAO
)。因此DAO分为2个单独的类... 如果接下来我需要访问另一个Web服务和一个附加的数据库怎么办?可以使用哪种更好的解决方案/模式?
在最初的CustomerDAO界面中添加Web服务方法会将数据库访问与Web服务访问混合在一起,我认为这不好。
解决方法
如果我理解您的问题是对的 您需要拥有一个数据库服务,该服务具有所有 Customer 的GRUD操作,并假定它将被称为 CustomerDBDao ,而另一项服务名为 CustomerAPIDao Web服务操作和所有服务中的所有操作都在称为 CustomerDAO 的常规服务中调用 从这两个服务填充数据并生成一个Unified POJO的概念称为适配器设计模式
https://www.tutorialspoint.com/design_pattern/adapter_pattern.htm