Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OOP:创建utils类或扩展公共基对象?_Java_Oop - Fatal编程技术网

Java OOP:创建utils类或扩展公共基对象?

Java OOP:创建utils类或扩展公共基对象?,java,oop,Java,Oop,我有很多相关的类,它们都实现了一个特定的接口,以不同的方式完成相同的功能 任何一个类中大约70%的代码是唯一的,大约30%的代码可以在两个或多个类之间重复使用。这一组大约有30个这样的班级 我无法决定什么更符合逻辑: 创建一个包含所有可重用函数的大型基类,或者只创建一个包含公共函数的utils类 这两种方法对我来说似乎是一样的,但有什么理由我会喜欢其中一种而不是另一种吗?如果有一些功能可以作为实用工具单独使用,我更喜欢util类,因为它易于测试,并且可以在需要时使用,没有副作用,如果有一些功能可

我有很多相关的类,它们都实现了一个特定的接口,以不同的方式完成相同的功能

任何一个类中大约70%的代码是唯一的,大约30%的代码可以在两个或多个类之间重复使用。这一组大约有30个这样的班级

我无法决定什么更符合逻辑:

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


这两种方法对我来说似乎是一样的,但有什么理由我会喜欢其中一种而不是另一种吗?

如果有一些功能可以作为实用工具单独使用,我更喜欢util类,因为它易于测试,并且可以在需要时使用,没有副作用,如果有一些功能可以作为实用工具独立使用,我宁愿使用util类,因为它易于测试,并且可以在需要的任何地方使用,并且没有副作用,而不是继承或组合,除非它在逻辑上有意义,答案取决于你的方法的性质,而不是继承权或组合,除非它在逻辑上有意义。当您希望对无状态对象值独立(例如getMaxOfArrayint[]数组)执行某些操作时,Util类/方法更有用。若要重复,当将有限的参数传递给方法并从方法中获得预期输出时,可以考虑将该方法作为UTIL类方法。这就是为什么通常util方法被创建为静态的,并且不与类实例相关联

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

答案取决于方法的性质。当您希望对无状态对象值独立(例如getMaxOfArrayint[]数组)执行某些操作时,Util类/方法更有用。若要重复,当将有限的参数传递给方法并从方法中获得预期输出时,可以考虑将该方法作为UTIL类方法。这就是为什么通常util方法被创建为静态的,并且不与类实例相关联


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

父类与其子类之间的关系应该非常特殊,子类是父类的一种更特殊的情况。您的通用功能是否适合这种想法?当你谈论一个大的基类时,我怀疑不是,但是考虑到你提供的信息,这只是一种预感

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


请记住,尽管混合和匹配也可能是合适的,但这完全取决于每个方法所做的事情。

父类与其子类之间的关系应该非常特殊,子类是父类的更特殊的情况。您的通用功能是否适合这种想法?当你谈论一个大的基类时,我怀疑不是,但是考虑到你提供的信息,这只是一种预感

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


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

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

最好的例子是Java集合的管理方式

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

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

最好的例子是Java集合的管理方式

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

您的直觉是正确的,核心功能是实现一个由上述接口定义的主要方法。常见的功能是函数和表示数据的方式。但是,由于代码的性质,在某些地方我会在这些函数中重复使用对象,例如大型StringBuffer,我不想每次都重新创建这些对象,这不容易封装到实用程序类中。所以我认为你关于混合和匹配的观点说得很好。你的直觉是对的,核心功能是实现一个由所提到的接口定义的主要方法。常见的功能是函数和表示数据的方式。然而,由于代码的性质,有些地方我
我在这些函数中重复使用对象,比如大的StringBuffer,我不想每次都重新创建它,这不容易封装到实用程序类中。所以我认为你关于混合和匹配的观点说得很好。另外,它打开了它在其他地方被重用的可能性,因为它是一个原子,它打开了它在其他地方被重用的可能性,因为它是一个原子