1

我有一堆相关的类,它们都实现了某个接口以不同的方式执行相同的功能。

任何一个类中大约 70% 的代码是唯一的,大约 30% 可以在 2 个或多个类之间重用。集合中大约有 30 个这样的类。

我只是无法决定什么更合乎逻辑:

创建一个包含所有可重用函数的大型基类,或者只创建一个包含常用函数的 utils 类。

这两种方法在我看来是一样的,但我是否有理由偏爱其中一种?

4

4 回答 4

3

答案取决于您的方法的性质。 当您想对无状态对象值(独立)Util执行某些操作时,类/方法更有用,例如。重新迭代,当您将某些(有限)参数传递给方法并从该方法获得预期输出时,您可以考虑将该方法作为类方法。这就是原因,通常 util 方法被创建为类实例并且不与类实例相关联。getMaxOfArray(int[] array)Utilstatic

如果这是行为,则使用Util该类。但是,如果您的方法严重依赖对象实例,那么最好将类层次结构与基类中定义的通用方法一起使用。

于 2012-12-21T06:04:14.080 回答
1

您将需要识别具有通用功能的类,对它们进行分组并提取接口。

查看 @ 的最佳示例是管理 Java 集合的方式。

您可以拥有 1. 接口层次结构 2. 公共具体类之间共享的抽象类 3. 实用程序类

于 2012-12-21T07:08:23.783 回答
1

父类与其子类之间的关系应该是相当特殊的,子类“是”父类的更特殊的情况。您的常用功能是否适合这种思维方式?当您谈论“大基类”时,我怀疑不是,但鉴于您提供的信息,这只是一种预感。

如果辅助功能不适合这种关系,那么我会建议实用程序类。

请记住,尽管混合和匹配也可能是合适的,但这完全取决于每种方法的作用。

于 2012-12-21T06:25:41.193 回答
0

如果有一些功能可以作为实用程序独立使用,我更喜欢 util 类,因为它易于测试并且可以在任何需要的地方使用而没有副作用,而不是进入层次结构或组合,除非它在逻辑上有意义

于 2012-12-21T06:03:48.430 回答