策略模式是从不同来源获取相同信息的好选择吗?

时间:2014-01-23 22:38:04

标签: design-patterns

我正在编写一个“主”API调用,从不同供应商处获取相同的信息。

例如,假设有2个供应商,我可以访问各自的REST API以从用户Jane中提取好友列表:

供应商1为我提供了来自Jane的一些朋友。

供应商2还向我提供了来自Jane的一些朋友,但供应商2给我的朋友列表可能(或可能不)与供应商1给我的朋友列表不同。< / p>

我需要编写一个脚本,从两个供应商中提取列表,合并它们并从中删除重复项。

我正在考虑使用策略模式来实现这一点,以便我可以在运行时交换API调用实现,但我想知道这是否适用于这种模式。

如果不是,那么什么样的设计模式可以让我拥有可变数量的API调用实现,并让我在需要加班时添加更多?

我打算使用的语言是PHP,如果这会影响你的答案。

2 个答案:

答案 0 :(得分:2)

策略=模式',可以在运行时选择算法的行为'(维基百科)。因此,它表明它适合您的问题。

答案 1 :(得分:2)

在我看来,您要避免的关键是混合使用组合和重复排序列表的代码以及进行API调用所需的逻辑。您应该看到的设计模式是存储库模式。不知道情况的复杂性以下是我将如何解释:

与API一起使用的每个对象都应该实现相同的“FriendRepository”界面,以便您获取朋友列表。

然后你会有你的FriendCompiler类,它有一个FriendRepository接口列表。在您的代码中,您将遍历FriendRepositories列表,获取朋友并编译最终列表。 FriendCompiler类不会意识到任何API的实现细节,List允许您在运行时从FriendCompiler类添加,更改或删除FriendRepositories。