太 原 外 围 - 太 原 的 外 围 资 源 -薇芯【81343628】【81343628】【高端外围资源】【诚信合作,非诚勿扰!】可直接添加 !中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
太 原 外 围 - 太 原 的 外 围 资 源 -薇芯【81343628】【81343628】【高端外围资源】【诚信合作,非诚勿扰!】可直接添加 !简单描述:1个抽象Colleague,其派生多个具体ConcreteColleague,每个具体ConcreteColleague都认识一个具体中介者。他们发送消息的时候是通过中介者发送。1个中介者,具体中介者认识所有的ConcreteColleague(即持有所有具体ConcreteColleague的引用),它提供向其他具体ConcreteColleague发送消息的接口(这个接口只需要指明发送消息的ConcreteColleague而不要指明接收消息的ConcreteColleague)
大话设计模式中的截图:
代码例子:
AbstractMediator类:
1 package com.longsheng.mediator;
2
3 public abstract class AbstractMediator {
4
5 public abstract void sendMessage(String message, AbstractColleague mColleague);
6
7 }
AbstractColleague类:
1 package com.longsheng.mediator;
2
3 public abstract class AbstractColleague {
4
5 protected AbstractMediator mMediator;
6
7 public AbstractColleague(AbstractMediator mMediator) {
8 this.mMediator = mMediator;
9 }
10
11 public AbstractMediator getmMediator() {
12 return mMediator;
13 }
14
15 public void setmMediator(AbstractMediator mMediator) {
16 this.mMediator = mMediator;
17 }
18
19 }
ConcreteColleagueA类:
1 package com.longsheng.mediator;
2
3 public class ConcreteColleagueA extends AbstractColleague {
4
5 public ConcreteColleagueA( AbstractMediator mMediator ) {
6 super(mMediator);
7 }
8
9 public void sendMessage( String message ) {
10 mMediator.sendMessage(message, this);
11 }
12
13 public void getMessage(String message) {
14 System.out.println("ConcreteColleagueA得到消息:" + message);
15 }
16
17 }
ConcreteColleagueB类:
1 package com.longsheng.mediator;
2
3 public class ConcreteColleagueB extends AbstractColleague {
4
5 public ConcreteColleagueB( AbstractMediator mMediator ) {
6 super(mMediator);
7 }
8
9 public void sendMessage( String message ) {
10 mMediator.sendMessage(message, this);
11 }
12
13 public void getMessage(String message) {
14 System.out.println("ConcreteColleagueB得到消息:" + message);
15 }
16
17 }
Mediator类:
1 package com.longsheng.mediator;
2
3 public class Mediator extends AbstractMediator {
4
5 private ConcreteColleagueA mColleagueA;
6 private ConcreteColleagueB mColleagueB;
7
8 public ConcreteColleagueA getmColleagueA() {
9 return mColleagueA;
10 }
11
12 public void setmColleagueA(ConcreteColleagueA mColleagueA) {
13 this.mColleagueA = mColleagueA;
14 }
15
16 public ConcreteColleagueB getmColleagueB() {
17 return mColleagueB;
18 }
19
20 public void setmColleagueB(ConcreteColleagueB mColleagueB) {
21 this.mColleagueB = mColleagueB;
22 }
23
24 @Override
25 public void sendMessage(String message, AbstractColleague mColleague) {
26 if(mColleague == null) {
27 System.out.println("同事不能为空!");
28 return;
29 }
30 if( mColleague == mColleagueA ) {
31 mColleagueB.getMessage(message);
32 } else if( mColleague == mColleagueB ) {
33 mColleagueA.getMessage(message);
34 }
35 }
36
37 }
客户端类:
1 package com.longsheng.mediator;
2
3 public class Client {
4
5 public static void main( String args[] ) {
6 Mediator mMediator = new Mediator();
7 ConcreteColleagueA mColleagueA = new ConcreteColleagueA(mMediator);
8 ConcreteColleagueB mColleagueB = new ConcreteColleagueB(mMediator);
9
10 mMediator.setmColleagueA(mColleagueA);
11 太 原 外 围 - 太 原 的 外 围 资 源 -薇芯【81343628】【81343628】【高端外围资源】【诚信合作,非诚勿扰!】可直接添加 !mMediator.setmColleagueB(mColleagueB);
太 原 外 围 - 太 原 的 外 围 资 源
猜你喜欢
转载自www.cnblogs.com/zhaoyanchun/p/12784089.html
今日推荐
周排行