OOP:创建一个utils类或扩展一个公共基础对象?

时间:2012-12-21 05:58:28

标签: java oop

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

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

我无法确定什么更合乎逻辑:

  

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

这两种方法对我来说都是一样的,但是我有理由支持其中一种吗?

4 个答案:

答案 0 :(得分:2)

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

如果这是行为,那么使用Util类。但是,如果您的方法严重依赖于对象实例,那么最好使用类层次结构和基类中定义的常用方法。

答案 1 :(得分:1)

父类与其子级之间的关系应该非常特殊,子级“是”父级的更专业的情况。您的共同功能是否适合这种想法?当你谈到一个“大基类”时,我怀疑没有,但鉴于你提供的信息只是一种预感。

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

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

答案 2 :(得分:1)

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

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

你可以拥有  1.接口层次结构  2.常见Concrete类之间共享的抽象类  3.实用课程

答案 3 :(得分:0)

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