File tree Expand file tree Collapse file tree 6 files changed +131
-0
lines changed
java-des/src/com/java/design/mediator Expand file tree Collapse file tree 6 files changed +131
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments