假设我们有一个只有1个函数的类,例如:compute 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();
答案 0 :(得分:7)
构造函数用于初始化对象中的数据字段。鉴于选择,第二种方法似乎更正确。
尽管可能更好的是在图形对象中包含doDFS方法。为单个简单函数创建整个类通常是不好的做法。 doDFS方法特定于它使用的图形,因此将它包含在您拥有的任何图形类中都是很自然的。
答案 1 :(得分:4)
后者。惯例是构造函数创建一个准备好工作的空白对象,而不是立即开始工作的对象。
虽然两者都有效,但前者尚不清楚。