这被视为循环依赖吗?我不喜欢那个我必须将对象本身传递给IRule的部分......有没有办法解决这个问题?
public interface IRule
{
void Apply(World world);
}
public class World
{
public List<IRule> Rules { get; set; }
public void ApplyAllRules()
{
foreach (var rule in Rules)
{
//This is the part that I don't feel good about.
rule.Apply(this);
}
}
}
答案 0 :(得分:1)
可能是我错了但是术语&#34;循环依赖&#34;通常适用于参考文献。你在这里所谓的&#34;紧耦合&#34;。正如 Gjeltema 所提到的那样,除此之外没有太大的错误,最好是你将具体的物体分离出来。
public interface IRule
{
void Apply(ILocation loc);
}
public class World : ILocation
{
public List<IRule> Rules { get; set; }
public void ApplyAllRules()
{
foreach (var rule in Rules)
{
rule.Apply(this);
}
}
}
现在你有IRule
与具体对象进行通信而不是抽象接口。因此,没有2个或更多实现紧密耦合。