您的位置:首页 > 编程语言 > Java开发

设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 中介者模式(Mediator) - Java实现

2017-06-20 23:31 791 查看
设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 中介者模式(Mediator)

中介者封装一系列对象操作,使对象之间不需要显式操作,从而实现耦合松散。

一、说明:

1、IMediator 中介者(接口);

2、AbstractColleague 同事类(彼此之间相互影响的类);

3、ColleagueA 同事类.实现类;

4、ColleagueB 同事类.实现类;

5、Mediator 中介者.实现类。

二、Java实现,代码如下:

1、IMediator

package com.java.designPattern.mediator;

/**
* 中介者 - 接口
*
*/
public interface IMediator {

public void handleColleagueA();

public void handleCooleagueB();

}


2、AbstractColleague

package com.java.designPattern.mediator;

/**
* 同事类 - 彼此之间相互影响
*
*/
public abstract class AbstractColleague {

private Integer num;

public AbstractColleague(Integer num) {
this.num = num;
}

public Integer getNum() {
return num;
}

public void setNum(Integer num) {
this.num = num;
}

public abstract void setNum(Integer num, IMediator mediator);

}


3、ColleagueA

package com.java.designPattern.mediator;

/**
* 同事类 - 实现类
*
*/
public class ColleagueA extends AbstractColleague {

public ColleagueA(Integer num) {
super(num);
}

@Override
public void setNum(Integer num, IMediator mediator) {
setNum(num);
mediator.handleCooleagueB();
}

}


4、ColleagueB

package com.java.designPattern.mediator;

/**
* 同事类 - 实现类
*
*/
public class ColleagueB extends AbstractColleague {

public ColleagueB(Integer num) {
super(num);
}

@Override
public void setNum(Integer num, IMediator mediator) {
setNum(num);
mediator.handleColleagueA();
}

}


5、Mediator

package com.java.designPattern.mediator;

/**
* 中介者 - 实现类
*
*/
public class Mediator implements IMediator {

private ColleagueA colleagueA;
private ColleagueB colleagueB;

public Mediator(ColleagueA colleagueA, ColleagueB colleagueB) {
this.colleagueA = colleagueA;
this.colleagueB = colleagueB;
}

@Override
public void handleColleagueA() {
colleagueA.setNum(colleagueB.getNum() + 1);
}

@Override
public void handleCooleagueB() {
colleagueB.setNum(colleagueA.getNum() - 1);
}

}


6、Test

package com.java.designPattern.mediator;

/**
* 测试类
*
*/
public class Test {

public static void main(String[] args) {
ColleagueA colleagueA = new ColleagueA(0);
ColleagueB colleagueB = new ColleagueB(0);
Mediator mediator = new Mediator(colleagueA, colleagueB);

System.out.println("colleagueA : " + colleagueA.getNum());
System.out.println("colleagueB : " + colleagueB.getNum());
System.out.println("parting line !!!");

colleagueA.setNum(2, mediator);
System.out.println("colleagueA : " + colleagueA.getNum());
System.out.println("colleagueB : " + colleagueB.getNum());
System.out.println("parting line !!!");

colleagueB.setNum(3, mediator);
System.out.println("colleagueA : " + colleagueA.getNum());
System.out.println("colleagueB : " + colleagueB.getNum());
}

}


输出:

colleagueA : 0

colleagueB : 0

parting line !!!

colleagueA : 2

colleagueB : 1

parting line !!!

colleagueA : 4

colleagueB : 3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐