java - 何时创建使用实例方法与何时传递对象引用?

标签 java oop constructor

<分区>

如果我想在图上做一个DFS,

选项 1: 我可以使用方法 dfs() 创建一个类 Graph

选项 2: 我可以创建 2 个类 Graph 和 DFS,并在 DFS 的构造函数中传递 Graph 对象。

一般来说,什么时候使用实例方法,什么时候选择将实例传递给另一个类的构造函数?有什么经验法则吗?

最佳答案

我会使用单独的类,将成为图表的关注点与导航图表的关注点分开。

为图节点创建接口(interface),eg

interface Node<T> {
    T getValue();
    Set<Node<T>> getChildren();
}

并创建一个导航和搜索图形的界面:

interface GraphSearcher<T> {
    Node<T> search(Node<T> root, T value();
}

然后创建一个 DFS 实现:

class DfsGraphSearcher<T> {
    Node<T> search(Node<T> root, T value) {
        // DFS impl
    }
}

进一步将责任与实现分离将允许您在不更改任何客户端代码的情况下交换另一个(例如广度优先)impl,也许使用抽象工厂。

关于java - 何时创建使用实例方法与何时传递对象引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19151274/

相关文章:

java - 使用 JDBC River 插入自定义索引

java - 如何使用 DateFormat 将 FileTime 转换为字符串

java - 从 pdf 中提取单词坐标的库/工具

java - mvn clean install 不要使用最后的 .class 版本

oop - 面向对象或模块化文件和数据 I/O 的技术?

c# - 确保所有虚拟方法都被覆盖

c++ - 无法将字符串文字分配给装箱的 std::string vector

java - 为什么这个对象在没有组合类的情况下仍然存在,即使它是组合的

java - 非静态变量 this 不能从静态上下文 JFrame 中引用

java - 在基类构造函数中调用虚方法