Mediator Pattern Sample Code - architectstory/MSA_REF_PATTERN_CQRS GitHub Wiki
public class MediatorPattern {
public static void main(String[] args) {
new ConcreteMediator();
ConcreteMediator mediator = new ConcreteMediator();
ServiceA serviceA = new ServiceA(mediator);
ServiceB serviceB = new ServiceB(mediator);
serviceA.process();
serviceB.perform();
}
}
class ConcreteMediator implements Mediator {
private ServiceA serviceA;
private ServiceB serviceB;
public ConcreteMediator() {
this.serviceA = new ServiceA(this);
this.serviceB = new ServiceB(this);
}
@Override
public void notify(Object sender, String event) {
if (event.equals("A")) {
System.out.println("Mediator React: Message From ServiceA");
serviceB.perform();
}
}
}
interface Mediator {
void notify(Object sender, String event);
}
class ServiceA {
private Mediator mediator;
public ServiceA(Mediator mediator) {
this.mediator = mediator;
}
public void process() {
System.out.println("ServiceA Processing");
mediator.notify(this, "A");
}
}
class ServiceB {
private Mediator mediator;
public ServiceB(Mediator mediator) {
this.mediator = mediator;
}
public void perform() {
System.out.println("ServiceB Processing");
}
}