Skip to content

Commit 7ad5e8f

Browse files
authored
中介者模式
中介者模式
1 parent 28d9081 commit 7ad5e8f

File tree

6 files changed

+131
-0
lines changed

6 files changed

+131
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.java.design.mediator;
2+
3+
public class Colleague {
4+
5+
protected String name;
6+
7+
protected Mediator mediator;
8+
9+
public Colleague(String name, Mediator mediator) {
10+
11+
this.mediator = mediator;
12+
this.name = name;
13+
}
14+
15+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.java.design.mediator;
2+
3+
public class ColleagueA extends Colleague {
4+
5+
public ColleagueA(String name, Mediator mediator) {
6+
7+
super(name, mediator);
8+
}
9+
10+
public void getMessage(String message) {
11+
12+
System.out.println(name + "收到消息:" + message);
13+
}
14+
15+
// 与中介者通讯
16+
public void contact(String message) {
17+
mediator.contact(message, this);
18+
}
19+
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.java.design.mediator;
2+
3+
public class ColleagueB extends Colleague {
4+
5+
public ColleagueB(String name, Mediator mediator) {
6+
7+
super(name, mediator);
8+
}
9+
10+
public void getMessage(String message) {
11+
12+
System.out.println(name + "收到消息:" + message);
13+
}
14+
15+
// 与中介者通讯
16+
public void contact(String message) {
17+
mediator.contact(message, this);
18+
}
19+
20+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.java.design.mediator;
2+
3+
/**
4+
* 定义具体中介者ConcreteMediator,具体中介者通过协调各同事对象实现协作行为,了解并维护它的各个同事。
5+
*
6+
* @author Administrator
7+
*
8+
*/
9+
public class ConcreteMediator extends Mediator {
10+
11+
ColleagueA colleagueA;
12+
13+
ColleagueB colleagueB;
14+
15+
public ColleagueA getColleagueA() {
16+
return colleagueA;
17+
}
18+
19+
public void setColleagueA(ColleagueA colleagueA) {
20+
this.colleagueA = colleagueA;
21+
}
22+
23+
public ColleagueB getColleagueB() {
24+
return colleagueB;
25+
}
26+
27+
public void setColleagueB(ColleagueB colleagueB) {
28+
this.colleagueB = colleagueB;
29+
}
30+
31+
@Override
32+
public void contact(String message, Colleague colleague) {
33+
34+
if (colleague == colleagueA) {
35+
// 制定规则 : 如果是A 则发送给 B
36+
colleagueB.getMessage(message);
37+
} else if (colleague == colleagueB) {
38+
// 如果是B 则发送给A
39+
colleagueA.getMessage(message);
40+
}
41+
}
42+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.java.design.mediator;
2+
3+
/**
4+
* 定义抽象 Mediator 中介者 ,可以与其他同时进行联络
5+
*
6+
* @author Administrator
7+
*
8+
*/
9+
public abstract class Mediator {
10+
11+
public abstract void contact(String message, Colleague colleague);
12+
13+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.java.design.mediator;
2+
3+
/**
4+
* 中介者模式 -----> 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
5+
*
6+
* @author Administrator
7+
*
8+
*/
9+
public class MediatorPattern {
10+
11+
public static void main(String[] args) {
12+
13+
ConcreteMediator mediator = new ConcreteMediator();
14+
ColleagueA colleagueA = new ColleagueA("A", mediator);
15+
ColleagueB colleagueB = new ColleagueB("B", mediator);
16+
mediator.setColleagueA(colleagueA);
17+
mediator.setColleagueB(colleagueB);
18+
colleagueA.contact("B 啊 我在找你啊 ...");
19+
colleagueB.contact("A 啊 我在找你啊 ...");
20+
}
21+
}

0 commit comments

Comments
 (0)