将方法组合在一种方法中还是使用多种方法更好?

Is it better to group methods together in one method or to have several methods?

我有一个 class 管理一堆列表,这意味着 class 有 3 个 ArrayList 作为私有数据字段。

我希望能够将那些列表中对象的必要信息打印到一个字符串数组中。我希望能够对所有三个列表执行此操作,这意味着我需要三种方法。这些方法之间的唯一区别是我想从对象中取出什么样的信息,当然还有数组的长度。

所以我的问题是:使用 一个 方法来识别我想要打印的内容更好,还是使用三种不同的方法更好?

示例:

public String[] method(String type){
    if(type.equals(type1)){
        <print out necessary information from objects>
    }

    <two more methods...>
} 

一个方法应该只做一件事。如果你能以某种方式将它们结合起来,那就去做吧。更好的做法是用一种方法来表示一个过程,然后看看如果这三种方法都是一个过程的一部分,那么这三种方法是否可以组合成一个通用方法。

假设你有3个类、ABC,提供一个通用接口岂不是更好,比如print() 所有 类 都将实施?然后你只需要实现 1 种方法。

public interface IPrintToScreen {
    public void print();
}

public class A implements IPrintToScreen {
    public void print() {
        System.out.println(...);
        ...
    }
}
...

在您的代码中:

public void PrintListToScreen(List<IPrintToScreen> listToPrint) {
    for(IPrintToScreen item : listToPrint) {
        item.print();
    }
}

我的印象是你应该检查:http://en.wikipedia.org/wiki/Software_design_pattern 或类似的东西,因为你问(如果我理解正确的话)一些在现实生活中不应该发生的奇怪问题。

来自Effective Java

Just as classes can benefit from generification, so can methods. Static utility methods are particularly good candidates for generification. All of the “algorithm” methods in Collections (such as binarySearch and sort) have been generified.

因此,如果可以使用一种通用方法来处理所有列表,那将是我的选择。

我认为类型检测不是一个好主意。避免它的一种方法是让不同列表中的所有对象实现一个可用于打印它们的接口。

然后,您可以执行以下操作:

public String[] method(List<MyPrintableInterface> arg){...