2

也许这个问题很笼统,但我没有找到我想要的答案,所以我希望从这篇文章中得到一些想法。我正在尝试将一些常用的方法移到助手中以简化我的设计。我查看了多篇关于使实用程序方法静态v/s非静态的帖子和辩论。我的问题与创建一个结合了静态和非静态方法的帮助类有关。由于现有类包含我想要移出的静态和非静态方法的组合,因为我不希望在多个类中重复代码。所以,我想知道在帮助类中同时包含静态和非静态方法是否是个好主意。我有点犹豫的原因是大多数实用程序方法本质上是静态的,我想了解在实用程序类中使用静态和非静态方法是否是一个好的设计选择。有什么建议么??

4

1 回答 1

3

这取决于班级在做什么。

非静态方法意味着帮助类维护一些在不同实例之间可能不同的状态。如果您没有,那么所有静态方法都是可行的方法(就像 java Math 或 Collections 类一样)。

如果您需要跨方法调用维护实例状态,那么非静态方法很有用。如果您朝这个方向发展,那么您的帮助类将具有创建帮助对象的构造函数或静态工厂方法,并且每个实例都将具有维护状态的字段。

如果您的其他静态方法经常一遍又一遍地具有相同的参数,这些参数都是相同的值/引用,那么非静态方法也可能是一个好主意。在这种情况下,制作这些构造函数参数并且只为方法之间不同的附加参数设置方法参数可能会更简洁。

于 2015-08-27T17:58:18.633 回答