如何解决循环引用问题,例如 A 类将 B 类作为其属性之一,而 B 类将 A 类作为其属性之一?
架构师该如何解决这类问题呢?
如果以NHibernate为例,对象之间就会存在父子关系。
它如何处理这些父子场景?
在大多数情况下,当我必须让两个事物相互引用时,我创建了一个接口来删除循环引用。例如:
BEFORE
public class Foo
{
Bar myBar;
}
public class Bar
{
Foo myFoo;
}
依赖关系图:
Foo Bar
^ ^
| |
Bar Foo
Foo 依赖于 Bar,但 Bar 也依赖于 Foo。如果它们位于单独的程序集中,您将在构建时遇到问题,特别是在进行全新重建时。
AFTER
public interface IBar
{
}
public class Foo
{
IBar myBar;
}
public class Bar : IBar
{
Foo myFoo;
}
依赖关系图:
Foo, IBar IBar
^ ^
| |
Bar Foo
Foo 和 Bar 都依赖于 IBar。不存在循环依赖,如果 IBar 放置在其自己的程序集中,则 Foo 和 Bar 位于单独的程序集中将不再是问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)