Skip to content

Instantly share code, notes, and snippets.

@Ganeshcse
Created November 12, 2021 14:55
Show Gist options
  • Save Ganeshcse/ec78c5d84f472eca28edbc0ee1ad0e14 to your computer and use it in GitHub Desktop.
Save Ganeshcse/ec78c5d84f472eca28edbc0ee1ad0e14 to your computer and use it in GitHub Desktop.
interface IMediatorMessage
{
}
interface IMessageHandler<T> where T : IMediatorMessage
{
void Handle(T message);
}
StepMessage : IMediatorMessage
{
}
Step : IMessageHandler<IMediatorMessage>
{
public Step(IMediator mediator)
{
mediator.Subscribe(this);
}
Handle(IMediatorMessage message)
{
// This is the handler for the message type T
}
}
class SimpleUseCase : UseCase
{
List<Step> steps = new List<Step>();
public UseCase(IMediator mediator)
{
this.mediator = mediator;
steps.Add(new Step(mediator);
}
public void Publish()
{
mediator.Publish(new StepMessage());
}
}
class Session
{
private IMediator mediator;
private List<UseCase> useCaseList = new List<UseCase>();
public Session()
{
mediator = new Mediator();
useCaseList.Add(new SimpleUseCase (mediator));
useCaseList.Add(new SimpleUseCase (mediator));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment