我正在编写一个“主”API调用,从不同供应商处获取相同的信息。
例如,假设有2个供应商,我可以访问各自的REST API以从用户Jane中提取好友列表:
供应商1为我提供了来自Jane的一些朋友。
供应商2还向我提供了来自Jane的一些朋友,但供应商2给我的朋友列表可能(或可能不)与供应商1给我的朋友列表不同。< / p>
我需要编写一个脚本,从两个供应商中提取列表,合并它们并从中删除重复项。
我正在考虑使用策略模式来实现这一点,以便我可以在运行时交换API调用实现,但我想知道这是否适用于这种模式。
如果不是,那么什么样的设计模式可以让我拥有可变数量的API调用实现,并让我在需要加班时添加更多?
我打算使用的语言是PHP,如果这会影响你的答案。
答案 0 :(得分:2)
策略=模式',可以在运行时选择算法的行为'(维基百科)。因此,它表明它适合您的问题。
答案 1 :(得分:2)
在我看来,您要避免的关键是混合使用组合和重复排序列表的代码以及进行API调用所需的逻辑。您应该看到的设计模式是存储库模式。不知道情况的复杂性以下是我将如何解释:
与API一起使用的每个对象都应该实现相同的“FriendRepository”界面,以便您获取朋友列表。
然后你会有你的FriendCompiler类,它有一个FriendRepository接口列表。在您的代码中,您将遍历FriendRepositories列表,获取朋友并编译最终列表。 FriendCompiler类不会意识到任何API的实现细节,List允许您在运行时从FriendCompiler类添加,更改或删除FriendRepositories。