Design patterns 战略模式的变化

Design patterns 战略模式的变化,design-patterns,Design Patterns,我正在使用策略模式来解析不同格式的文件 每个策略返回从文件解析的字符串列表。现在引入了一个要求,即从其中一种文件类型返回更多数据,因此需要对其中一种策略进行更新。是否有一个共同的做法来实现这一点?我可以在将来存储额外的数据,但我认为这太过分了?我提出的一个可能的解决方案是返回一个存储额外参数的自定义对象类型列表。您可以创建一个从基本策略接口继承的新接口,公开所需的新数据。然后,特定文件的具体策略实现将实现扩展接口 当为任何给定的文件选择并执行一个具体的策略类时,您可以检查它是否实现了扩展接口,如

我正在使用策略模式来解析不同格式的文件


每个策略返回从文件解析的字符串列表。现在引入了一个要求,即从其中一种文件类型返回更多数据,因此需要对其中一种策略进行更新。是否有一个共同的做法来实现这一点?我可以在将来存储额外的数据,但我认为这太过分了?

我提出的一个可能的解决方案是返回一个存储额外参数的自定义对象类型列表。

您可以创建一个从基本策略接口继承的新接口,公开所需的新数据。然后,特定文件的具体策略实现将实现扩展接口

当为任何给定的文件选择并执行一个具体的策略类时,您可以检查它是否实现了扩展接口,如果实现了,则相应地处理额外的数据

这样做的好处是,您实际上可以在扩展接口中编写数据契约,而不是拥有一个自由形式的额外参数列表。此外,如果需要,该接口可以在其他策略中重用

缺点是,如果许多其他策略可能与常用策略不同,那么最终可能会得到一个大的接口结构