Java抽象类或静态实用类设计选择

JAR*_*ARC 9 java oop design-patterns

我正在实施一些策略(策略模式),这些策略有一些共同的行为,并且在常见操作应该存在的地方尚未确定.

  • 假设我有1个上下文和3个策略,策略中使用的一些操作是共享的,有些仅需要2个其他操作,只需要1个策略.
  • 没有成员级别的状态共享,因此唯一的操作实际上是无状态的.
  • 操作的目的是支持将状态格式化为文件,例如视图助手.

选项1:创建一个AbstractStrategy类

  • 我正在使用Java,因此将来会立即使用此功能.
  • 继承倾向于导致.在山脊结构中.
  • 运营将是最终的.

选项2:创建一个Util类的静态助手

  • 灵活,但由于某种原因感觉像代码味道.
  • 没有山脊.

任何建议或偏好?

请注意,我正在处理的级别是策略级别,而不是上下文级别(请参阅维基百科链接).

Pow*_*ord 7

有一个原因......一个很大的原因......在抽象类或接口上使用静态Util类.

因此,您可以在以后添加更多方法.

使用抽象类或接口,必须在从其继承的所有类中更改对该类/接口所做的任何更改.如果您正在编写公共API,这尤其成问题.

Java框架具有分散在其中的静态方法的util类.最着名的是java.util包装:CollectionsArrays.