0

我有一个大项目,我陷入了一个我不知道如何修复的循环引用。我已经阅读了前向声明,但如果我理解得很好,如果我使用前向声明,该对象的公共方法/数据不是公共的。

我知道解决这个问题的最好方法是从第一行代码开始设计程序,但有时你继承了一个带有这些问题的大代码,并在你发现自己陷入混乱的代码中添加一个简单的功能.

那么......有没有其他方法可以解决这个问题?

4

1 回答 1

0

在 A 类使用 B 类但没有任何方法的情况下,A 类可以前向声明 B 类。如果 B 类使用 A 类,那么前向声明将删除一半的循环依赖,至少就编译器而言。

如果 A 需要更深入地了解 B 而不仅仅是其名称,您可以使用接口(抽象类)来反转从 A 到 Bie A 的依赖关系 A 使用新的 C(而不是 B),它至少导出 A 需要的接口, B 实现/扩展 C。

我已经看到这主要用于减少编译时间 - 这是你问的原因,还是更多地与“好”设计有关?

于 2012-06-05T15:58:49.440 回答