java mediator_中介者模式(Mediator)_java实现

//20210129

写在前面:刚期末考试完,考了面向对象,里边儿有23个设计模式,我寻思着考完挨个儿实现一下,本文实现命令模式

中介者模式核心思想

设置一个中介者,来通信所有相关的类

举例:MVC模型,Controller(C)是Model(M)和View(V)的中介,负责通信二者,解读消息

程序源代码:

这里为了方便理解,实现了一个美国、伊拉克通过中介(联合国安理会)沟通的场景

/**

* 抽象国家类

*/

public abstract class Country {

protected UnitedNations unitedNations;//每个国家都要声明中介者

public Country(UnitedNations unitedNations){

this.unitedNations = unitedNations;

}

}

/**

* 抽象中介----联合国,有调和各国关系的功能

*/

public abstract class UnitedNations {

public abstract void declare(String message,Country country);

}

/**

* 美国实现类

*/

public class USA extends Country{

public USA(UnitedNations unitedNations){

super(unitedNations);

}

public void declare(String message){

unitedNations.declare(message,this);

}

public void acquireMessage(String message){

System.out.println("美国获得对方信息:" + message);

}

}

/**

* 伊拉克实现类

*/

public class Iraq extends Country{

public Iraq(UnitedNations unitedNations){

super(unitedNations);

}

public void declare(String message){

unitedNations.declare(message,this);

}

public void acquireMessage(String message){

System.out.println("伊拉克获得对方信息:" + message);

}

}

/**

* 联合国安理会实现类

*/

public class UnitedNationsSecurityCouncil extends UnitedNations{

private USA usa;

private Iraq iraq;

public void setUsa(USA usa) {

this.usa = usa;

}

public void setIraq(Iraq iraq) {

this.iraq = iraq;

}

@Override

public void declare(String message, Country country) {

if(country == usa) {

iraq.acquireMessage(message);

} else {

usa.acquireMessage(message);

}

}

}

/**

* 测试主类

*/

public class Main {

public static void main(String[] args) {

UnitedNationsSecurityCouncil UNSC = new UnitedNationsSecurityCouncil();

USA usa = new USA(UNSC);

Iraq iraq = new Iraq(UNSC);

UNSC.setUsa(usa);

UNSC.setIraq(iraq);

usa.declare("不准研制核武器");

iraq.declare("我们没有核武器");

}

}

输出如下

59c35619ebceb9ae688997bedd2892d9.png

以上

希望对大家有所帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值