Mediator Pattern
This commit is contained in:
23
design-pattern/src/Mediator/Application.java
Normal file
23
design-pattern/src/Mediator/Application.java
Normal 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");
|
||||
}
|
||||
}
|
||||
10
design-pattern/src/Mediator/ChatColleague.java
Normal file
10
design-pattern/src/Mediator/ChatColleague.java
Normal 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);
|
||||
}
|
||||
}
|
||||
13
design-pattern/src/Mediator/ChatMediator.java
Normal file
13
design-pattern/src/Mediator/ChatMediator.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
design-pattern/src/Mediator/Mediator
Normal file
2
design-pattern/src/Mediator/Mediator
Normal file
@@ -0,0 +1,2 @@
|
||||
Mediator Pattern
|
||||
- M:N 관계를 1:1 로 변경하기
|
||||
20
design-pattern/src/Mediator/contract/Colleague.java
Normal file
20
design-pattern/src/Mediator/contract/Colleague.java
Normal 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);
|
||||
}
|
||||
23
design-pattern/src/Mediator/contract/Mediator.java
Normal file
23
design-pattern/src/Mediator/contract/Mediator.java
Normal 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);
|
||||
}
|
||||
Reference in New Issue
Block a user