6

假设我们有一个只有 1 个函数的类,例如:计算 DFS。以下哪一项是首选方法,为什么?

Approach 1:

public class DFS {

    public DFS(Graph g) {
      dfs(g);  // <--- computation invoked from constructor.
    }

    private void DFS(Graph g) {
       // do dfs traversal
    }
}

Client:
DFS dfs = new DFS(graph);


Approach 2:
public class DFS {
    Graph g;
    public DFS(Graph g) {
       this.g = g
    }

    private void doDFS() {
       // do dfs traversal
    }
}

Client:
DFS dfs = new DFS(graph);
dfs.doDFS();
4

2 回答 2

9

构造函数用于初始化对象中的数据字段。鉴于选择,第二种方法似乎更正确。

尽管在图形对象中包含 doDFS 方法可能会更好。为单个简单函数创建整个类通常是不好的做法。doDFS 方法特定于它使用的图形,因此将它包含在您拥有的任何图形类中是很自然的。

于 2013-08-05T02:22:19.497 回答
7

后者。约定是构造函数创建一个准备好工作的空白对象,而不是立即开始工作的对象。

虽然两者都会起作用,但前者尚不清楚。

于 2013-08-05T02:23:07.513 回答