中介者模式:
用一个中介对象来封装一系列的对象交互,中介者使个对象不需要显示地相互引用,从而使其耦合松散,可以独立地改变它们之间的交互。
// 国家类
public abstract class Country {
private UnionNations un;
public Country(UnionNations un) {
this.un = un;
}
public UnionNations getUn() {
return un;
}
public void setUn(UnionNations un) {
this.un = un;
}
public abstract void declare(String message);
public abstract void getMessage(String message);
}
// 伊拉克
public class Iraq extends Country {
public Iraq(UnionNations un) {
super(un);
}
@Override
public void declare(String message) {
this.getUn().declare(message, this);
}
@Override
public void getMessage(String message) {
System.out.println("Iraq has get the message: " + message);
}
}
// 美国
public class USA extends Country {
public USA(UnionNations un) {
super(un);
}
@Override
public void declare(String message) {
this.getUn().declare(message, this);
}
@Override
public void getMessage(String message) {
System.out.println("USA has get the message: " + message);
}
}
// 联合国机构类
public abstract class UnionNations {
public abstract void declare(String message, Country country);
}
// 联合国安全理事会
public class UnionNationsSecurityCouncil extends UnionNations {
private USA usa;
private Iraq iraq;
public USA getUsa() {
return usa;
}
public void setUsa(USA usa) {
this.usa = usa;
}
public Iraq getIraq() {
return iraq;
}
public void setIraq(Iraq iraq) {
this.iraq = iraq;
}
@Override
public void declare(String message, Country country) {
if (country instanceof USA) {
iraq.getMessage(message);
} else {
usa.getMessage(message);
}
}
}
public class MediatorMain {
public static void main(String[] args) {
UnionNationsSecurityCouncil unsc = new UnionNationsSecurityCouncil();
// 具体对象记住中介者
USA usa = new USA(unsc);
Iraq iraq = new Iraq(unsc);
// 中介者记住具体对象
unsc.setIraq(iraq);
unsc.setUsa(usa);
// 中介者负责转发消息
usa.declare("stop the unclear weapon's development!");
iraq.declare("I have no nuclear wapons!");
}
}
应用场景:
中介者模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合。
分享到:
相关推荐
大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf
设计模式之《大话设计模式》.pptx
设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为...
Android之大话设计模式——:抽象工厂模式借鉴.pdf
大话设计模式 完整设计模式介绍
《大话设计模式》C++实现-design-patterns-cpp
读书笔记:大话设计模式C++
android之大话设计模式.pdf
《大话设计模式》对各种设计模式,做简要归纳(原创)
二十三种设计模式二十三种设计模式二十三种设计模式
树懒自己整理的大话设计模式的修行笔记,对程序设计有很大的帮助,主要是以自己学习的习惯整理的!
读书笔记:设计模式大话设计模式
android之大话设计模式整理.pdf
大话设计模式之外观模式 经典代码 C#类
单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...
大话设计模式源代码之简单工厂模式 经典代码
NULL 博文链接:https://forrest420.iteye.com/blog/1050306
读书笔记:设计模式学习《大话设计模式》
NULL 博文链接:https://helei050.iteye.com/blog/2086309
Android之大话设计模式——:抽象工厂模式参考.pdf