Created
November 12, 2021 14:55
-
-
Save Ganeshcse/ec78c5d84f472eca28edbc0ee1ad0e14 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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