这是糟糕的代码吗?如果是,那么如何解决它
本文关键字:何解决 解决 代码 如果 | 更新日期: 2023-09-27 18:34:08
这算不算循环依赖?我不喜欢必须将对象本身传递给 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);
}
}
}
可能是我错了,但术语"循环依赖"通常适用于引用。你在这里所拥有的被称为"紧密耦合"。正如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 个或更多实现是紧密耦合的。