Ho una domanda riguardante il modello di mediatore che voglio implementare nella mia applicazione (utilizzando C#). Durante l'implementazione del pattern nel mio codice mi sono imbattuto in una dipendenza circolare. La struttura delle classi come segue:Dipendenza circolare nel modello di mediatore utilizzando C#
Mediator
e Colleague
componenti/classi sono in diversi gruppi e come modello di mediazione richiede che entrambi i componenti (classi) si utilizzino l'un l'altro. Il problema sorge quando ci si riferisce l'un l'altro.
consideri il codice qui sotto
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}
}
}
namespace Colleague
{
public abstract class IColleague
{
IMediator mediator;
void Send();
void Recieve();
}
public class ColleagueA:IColleague
{
void Send(){//code here}
void Recieve(){//code here}
}
}
come Mediater e collega sono in namespace diversi e assiemi, come risolvere la dipendenza circolare?
Dipende dalle astrazioni, non dalle concrezioni. Mediatore e Collega possono trovarsi in assemblee separate, ma gli interfacci dovrebbero essere nel proprio assembly. – MattDavey