设计模式------中介者模式

中介者模式:
定义一个对象来封装一系列对象的交互.

中介者的四个角色:
1.Mediator(抽象中介者)
2.ConcreteMediator(具体中介者)
3.Colleague(抽象同事类)
4.ConcreteColleague(具体同事类)

举例说明:
例如公司开发一套CRM系统,该系统负责编辑客户的信息,其中有一个UI界面负责显示和修改客户信息.
该界面包括列表框,组合框,文本框,在这三个框内编辑用户信息,其他框内的信息都要相应的改变.

具体实现:

/**
*
* @ClassName: Mediator
* @Description: 抽象中介者类
* @author haibiscuit
* @date 2019年10月22日 下午5:10:26
*
*/

public abstract class Mediator {
ArrayList<Mycomponent> arrayList;
protected void addMyComponent(Mycomponent c) {
if (null == arrayList) {
arrayList = new ArrayList<Mycomponent>();
}
arrayList.add(c);
};

public abstract void ComponentChanged(Mycomponent c);

}

/**
*
* @ClassName: ConcreteMediator
* @Description: 具体中介者类
* @author haibiscuit
* @date 2019年10月22日 下午5:11:41
*
*/
public class ConcreteMediator extends Mediator{
// 封装同事对象的交互
@Override
public void ComponentChanged(Mycomponent c) {
for (Mycomponent mycomponent : arrayList) {
mycomponent.Update();
}
}
}

/**
*
* @ClassName: Mycomponent
* @Description: 抽象组件类,充当抽象同事类
* @author haibiscuit
* @date 2019年10月22日 下午5:07:02
*
*/
public abstract class Mycomponent {
protected Mediator mediator;

public void setMediator(Mediator mediator) {
this.mediator = mediator;

}

//转发调用
public void changed() {
mediator.ComponentChanged(this);
}

public abstract void Update();
}

/**
*
* @ClassName: MyComboBox
* @Description: 组合框类,充当同事类
* @author haibiscuit
* @date 2019年10月22日 下午5:21:05
*
*/
public class MyComboBox extends Mycomponent{

@Override
public void Update() {
System.out.println("组合框修改信息");
}

}

/**
*
* @ClassName: MyList
* @Description: 列表框类,充当具体同事
* @author haibiscuit
* @date 2019年10月22日 下午5:19:11
*
*/
public class MyList extends Mycomponent{

@Override
public void Update() {
System.out.println("列表框修改信息");
}
}

/**
*
* @ClassName: MyTextBox
* @Description: 文本框类,充当同事类
* @author haibiscuit
* @date 2019年10月22日 下午5:19:45
*
*/
public class MyTextBox extends Mycomponent{

@Override
public void Update() {
System.out.println("文本框修改信息");
}
}

总结:

中介者模式很像观察者模式,具体的使用场景和比较可以参考观察者模式.

(0)

相关推荐

  • 通俗易懂设计模式解析——中介者模式

    前言 今天我们一起看看中介者模式,怎么去理解这个模式呢?说起来也简单.好理解.生活中我们租房经常都是通过中介来实现的.一般租房要么是房东直租要么是中介.那么今天要讲的中介者模式和租房的这个中介是否有关 ...

  • MediatorPattern中介者模式

    中介者模式 1.定义 使用一个中介对象封装一系列的对象交互,中介者使用对象不需要显式的相互作用,从而实降现低耦合度,且可以独立改变被封装的一些列对象之间的交互. 中介者模式也叫做调停者模式:对象之间的 ...

  • 行为型模式之中介者模式

    在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是"网状结构",它要求每个对象都必须知道它需要交互的对象. 如果把这种"网状结构"改为& ...

  • PHP设计模式之中介者模式

    PHP设计模式之中介者模式 上回说道,我们在外打工的经常会和一类人有很深的接触,那就是房产中介.大学毕业后马上就能在喜欢的城市买到房子的X二代不在我们的考虑范围内哈.既然需要长期的租房,那么因为工作或 ...

  • 图解Java设计模式之中介者模式

    智能家庭项目 传统方案解决智能家庭管理问题 中介者模式基本介绍 中介者模式的原理类图 中介者模式 - 智能家庭的操作流程 中介者模式的注意事项和细节 智能家庭项目 1)智能家庭包括各种设备,闹钟.咖啡 ...

  • Java设计模式-中介者模式

    https://www.shengchulai.com/blog-CiTs5E8tUf.htm 前言 小时候钟爱战争片,<地道战>.<鸡毛信>.<铁道游击队>一系列 ...

  • 简说设计模式——中介者模式

    一.什么是中介者模式 中介这个词并不陌生,就是房屋中介的那个"中介",就是中间人的意思.比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的 ...

  • 软件设计模式-中介者模式

    使用中介者模式来说明联合国的作用,要求绘制相应的类图并分析每个类的作用(注:可以将联合国定义为抽象中介者类,联合国下属机构如WIO,WHO,WTO等作为具体者类,国家作为抽象同事类,而将中国,美国等国 ...

  • [PHP小课堂]PHP设计模式之中介者模式

    [PHP小课堂]PHP设计模式之中介者模式 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[DarkMatterZyCoder/149844827]免费得PHP.项目管理学习资料

  • 无废话设计模式(17)行为型模式--中介者模式

    0-前言 中介者模式定义(Mediator): 用一个中介对象来封装一系列的对象交互. 中介者对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互. 1-实现 1-1.简单UM ...

  • 设计模式-行为型-中介者模式

    中介者模式(Mediator): 在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室.QQ群.短信平台和房产中介.不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中 ...