【发布时间】:2019-03-26 22:43:26
【问题描述】:
我最近询问了循环依赖。答案是专门开发一个关于接口的项目 (MyProject.Abstractions)。现在,这个项目是另一个循环依赖的原因,具有访问者模式。
namespace MyProject.Abstractions
{
public interface ICharacter { }
public interface ICharacterVisitor
{
// References MyProject.Characters
void Visit(Warrior warrior);
void Visit(Wizard wizard);
}
}
namespace MyProject.Characters
{
// References MyProject.Abstractions
public abstract class CharacterBase : ICharacter { }
public class Warrior : CharacterBase { }
public class Wizard : CharacterBase { }
}
这是否意味着我的 ICharacterVisitor 应该在我的 MyProject.Characters 项目中?我将整个解决方案用作我的 SOLID 培训练习。
【问题讨论】:
-
void Visit(IWarrior warrior)将帮助您将依赖关系从具体类转移到抽象。这里的问题取决于具体的 Warrior 类,如果你依赖于抽象的 IWarrior 接口,这个循环依赖就会消失
标签: c# .net solid-principles visitor-pattern cyclic-dependency