C# 使用c实现中介模式中的循环依赖#
我想在我的应用程序中实现一个中介模式(使用C#)。在代码中实现该模式时,我遇到了一个循环依赖项。课程结构如下所示:C# 使用c实现中介模式中的循环依赖#,c#,design-patterns,mediator,C#,Design Patterns,Mediator,我想在我的应用程序中实现一个中介模式(使用C#)。在代码中实现该模式时,我遇到了一个循环依赖项。课程结构如下所示: Mediator和component组件/类位于不同的程序集中,因为中介模式要求两个组件(类)相互使用。相互引用时会出现问题 考虑以下代码: namespace Mediator { public abstract class IMediator { public IColleague colleague{get;set;} void Regis
Mediator
和component
组件/类位于不同的程序集中,因为中介模式要求两个组件(类)相互使用。相互引用时会出现问题
考虑以下代码:
namespace Mediator
{
public abstract class IMediator
{
public IColleague colleague{get;set;}
void Register();
void Send();
}
public class MediatorA:IMediator
{
void Register(){//code here}
void Send(){//code here}
}
}
由于Mediater和同事位于不同的名称空间和程序集中,如何解决循环依赖关系?您需要定义第三个程序集,该程序集将包含接口。嗯,没有别的办法了。如果两个类为了实现一个模式而彼此紧密耦合,为什么它们在单独的程序集中?请注意,可以实现中介模式,而不需要这种循环依赖关系。您通常通过以下两种方式之一进行此操作:
我会将IColleague移动到包含中介代码的命名空间/程序集中。假设两者之间没有其他依赖关系。否则,将它们移动到当前所依赖的程序集。依赖于抽象,而不是具体。调解员和同事可以在单独的程序集中,但interfacas应该在自己的程序集中。
namespace Colleague
{
public abstract class IColleague
{
IMediator mediator;
void Send();
void Recieve();
}
public class ColleagueA:IColleague
{
void Send(){//code here}
void Recieve(){//code here}
}
}