用一个中介对象来封装一系列的对象交互。中介使各对象之间不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。
“联合国”就是世界上各个国家的一个“中介”,许多事情都不是国家之间直接交互,而是通过“安理会”等组织进行协商、投票等过程。
/** * 联合国机构 * created by callmedevil on 2019/12/15. */ public abstract class unitednations { // 声明 public abstract void declare(string message, country colleague); }
/** * 国家(相当于colleague类) * created by callmedevil on 2019/12/15. */ public abstract class country { protected unitednations mediator; public country(unitednations mediator){ this.mediator = mediator; } }
/** * 美国(相当于 concretecolleague1 类) * created by callmedevil on 2019/12/15. */ public class usa extends country{ public usa(unitednations mediator) { super(mediator); } // 声明 public void declare(string message){ mediator.declare(message, this); } //获得消息 public void getmessage(string message){ system.out.println("美国获得对方信息:" + message); } }
/** * 伊拉克(相当于 concretecolleague2 类) * created by callmedevil on 2019/12/15. */ public class iraq extends country{ public iraq(unitednations mediator) { super(mediator); } // 声明 public void declare(string message){ mediator.declare(message, this); } //获得消息 public void getmessage(string message){ system.out.println("伊拉克获得对方信息:" + message); } }
/** * 联合国安全理事会 * created by callmedevil on 2019/12/15. */ public class unitednationssecuritycouncil extends unitednations{ // 美国 private usa colleague1; // 伊拉克 private iraq colleague2; // 省略 get set @override public void declare(string message, country colleague) { // 重写声明方法,实现了两个对象之间的通信 if (colleague == colleague1) { colleague2.getmessage(message); } else { colleague1.getmessage(message); } } }
public class test { public static void main(string[] args) { unitednationssecuritycouncil unsc = new unitednationssecuritycouncil(); usa c1 = new usa(unsc); iraq c2 = new iraq(unsc); unsc.setcolleague1(c1); unsc.setcolleague2(c2); c1.declare("不准研制核武器,否则要发动战争!"); c2.declare("我们没有核武器,也不怕侵略!"); } }
运行结果
伊拉克获得对方信息:不准研制核武器,否则要发动战争! 美国获得对方信息:我们没有核武器,也不怕侵略!
如对本文有疑问, 点击进行留言回复!!
【面试题】研究过tomcat的NioEndpoint源码吗?请阐述下Reactor多线程模型在tomcat中的实现。
荐 厉害了!阿里P8架构师用4大技术文档带你深入解读爆火的中台战略
网友评论