Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7ad5e8f

Browse files
中介者模式
中介者模式
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)

AltStyle によって変換されたページ (->オリジナル) /