设计助手/实用程序类 - java

时间:2015-08-27 17:43:06

标签: java static utility-method

也许这个问题很普遍,但我找不到我想要的答案,所以我希望从这篇文章中得到一些想法。我试图将一些常用的方法移出帮助器来简化我的设计。我看了很多帖子,并讨论了如何使实用方法静态v / s非静态。我的问题与使用静态和非静态方法的组合创建辅助类更相关。由于现有的类包含我想要移出的静态和非静态方法的组合,因为我不想在多个类中重复代码。所以,我想知道在helper类中包含静态和非静态方法是否是个好主意。我有点犹豫的原因是大多数实用方法本质上都是静态的,我想了解它是否是在实用程序类中使用静态和非静态方法的良好设计选择。有什么建议??

1 个答案:

答案 0 :(得分:2)

这取决于班级正在做什么。

非静态方法意味着帮助程序类维护一些在不同实例中可能不同的状态。如果你没有那个,那么所有静态方法都是可行的方法(想像java Math或Collections类)。

如果需要跨方法调用维护实例状态,则非静态方法很有用。如果你朝着这个方向前进,那么你的助手类将有构造函数或静态工厂方法来创建Helper对象,每个实例都有一些维护状态的字段。

非静态方法也可能是一个好主意,如果你的静态方法通常反复使用相同的参数,那些都是相同的值/引用。在这种情况下,创建这些构造函数参数可能更清晰,并且只有方法参数在方法之间有所不同。