我正在实现一些策略 (Strategy Pattern)它们有一些共同的行为,但尚未决定共同操作应该放在哪里。
- 假设我有 1 个上下文和 3 个策略,策略中使用的一些操作是共享的,一些只需要 2 个,其他只是策略之一。
- 没有成员级状态共享,因此唯一的操作实际上是无状态的。
- 操作的目的是支持将状态格式化为文件,如 View 助手。
选项 1:创建一个 AbstractStrategy 类
- 我正在使用 Java,所以马上 在 future 。
- 继承趋于结果。 在山脊结构中。
- 操作将是最终的。
选项 2:创建静态助手的 Util 类
- 灵活,但出于某种原因感觉有点代码味。
- 没有脊。
有什么建议或偏好吗?
请注意,我工作的级别是策略级别,而不是上下文级别(请参阅维基百科链接)。
最佳答案
有一个原因......一个巨大的原因......在抽象类或接口(interface)上使用静态 Util 类。
因此您可以在以后添加更多方法。
对于抽象类或接口(interface),您对该类/接口(interface)所做的任何更改都必须在从它继承的所有类中进行更改。如果您正在编写公共(public) API,这尤其成问题。
Java 框架有实用类,静态方法分散在各处。最著名的在 java.util
中。包裹:Collections
和 Arrays
.
关于Java 抽象类或静态实用程序类设计选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3336258/