Mediator Pattern

This commit is contained in:
kim
2021-01-18 15:34:00 +09:00
parent 8455511ac8
commit 4af6067c6b
6 changed files with 91 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
package Mediator;
import Mediator.contract.Colleague;
import Mediator.contract.Mediator;
public class Application {
public static void main(String[] args) {
Mediator mediator = new ChatMediator();
Colleague colleague1 = new ChatColleague();
Colleague colleague2 = new ChatColleague();
Colleague colleague3 = new ChatColleague();
colleague1.join(mediator);
colleague2.join(mediator);
colleague3.join(mediator);
colleague1.sendData("AAA");
colleague2.sendData("BBB");
colleague3.sendData("CCC");
}
}

View File

@@ -0,0 +1,10 @@
package Mediator;
import Mediator.contract.Colleague;
public class ChatColleague extends Colleague {
@Override
public void handle(String data) {
System.out.println(this + data);
}
}

View File

@@ -0,0 +1,13 @@
package Mediator;
import Mediator.contract.Colleague;
import Mediator.contract.Mediator;
public class ChatMediator extends Mediator {
@Override
public void mediate(String data) {
for(Colleague colleague: colleagues) {
colleague.handle(data);
}
}
}

View File

@@ -0,0 +1,2 @@
Mediator Pattern
- M:N 관계를 1:1 로 변경하기

View File

@@ -0,0 +1,20 @@
package Mediator.contract;
public abstract class Colleague {
private Mediator mediator;
public boolean join(Mediator mediator) {
if(mediator == null) return false;
this.mediator = mediator;
return mediator.addColleague(this);
}
public void sendData(String data) {
if(mediator != null) {
mediator.mediate(data);
}
}
public abstract void handle(String data);
}

View File

@@ -0,0 +1,23 @@
package Mediator.contract;
import java.util.ArrayList;
import java.util.List;
public abstract class Mediator {
protected List<Colleague> colleagues;
public Mediator() {
colleagues = new ArrayList<>();
}
public boolean addColleague(Colleague colleague) {
if(colleagues != null) {
return colleagues.add(colleague);
} else {
return false;
}
}
public abstract void mediate(String data);
}