首页 > 解决方案 > 设计模式; 具有不同方法的类,它们的行为可能不同,这取决于多种事物

问题描述

我需要创建一个系统来与我们客户的不同系统进行通信。将有一个域层进行不同的计算,但为了简单起见,我们只使用一个名为“GenerateToken”的函数,它具有创建访问令牌的算法。

我们有不同类型的客户使用不同版本的 API。为了更容易可视化,我将尝试用一个例子来解释:

1.Company A is X type of customer – uses API v.1.0
2.Company B is X type of customer – uses API v.1.1
3.Company C is Y type of customer – uses API v.2.0
4.Company D is Z type of customer – uses API v.1.0
5.Company E is X type of customer – uses API v.1.1
6.Company F is Z type of customer – uses API v.2.0

如果 API 版本和公司类型相同,则表示生成令牌的方式相同。例如; “GenerateToken”函数将采用相同的参数,并且在示例中的第 2 和第 5 种情况下具有相同的算法。“GenerateToken”只是一个例子,未来会有更多的计算,这意味着设计的可扩展性(开放关闭原则)是最重要的事情之一。

我的问题是我无法决定应该采用哪种架构或设计模式。我可以使用“GenerateToken”创建一个父类,然后从子函数(多态)中覆盖它,或者使用类似于“工厂方法模式”的东西。然而,在这些情况下,我需要为几乎每个公司类型的 API 版本(TypeXApiV1.0、TypeXApiV1.1、TypeYApiV1.0 等)创建一个类,这感觉很愚蠢。

您对此解决方案有何建议,或者我可以使用任何设计模式。我希望我能解释一下情况。如果有什么我遗漏或没有解释清楚,请告诉我。谢谢你。

标签: design-patternsarchitecturesoftware-design

解决方案


我认为您需要Strategy 模式。在策略模式中,您可以针对不同的情况切换不同的实现。


推荐阅读