中介者模式小记【原创】
几天没写设计模式的总结了,工作上要学的事情多,觉得写写挺麻烦。可是这几天下来发现没写总结后,新学的几个模式之间的区别都搞混淆了,看来做学问真的是没有捷径的。写吧!
先来看一个公司的部门关系
怎么样,由于各个部门之间都会有交互,是不是显得逻辑很混乱?可想而知,就算实现了,日后维护也是相当困难的。于是就有了中介者模式:
中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单的说,就是一个星型拓扑图
抽象中介者类:
public abstract class AbstractMediator { protected Purchase purchase; protected Sale sale; protected Stock stock; //构造函数 public AbstractMediator(){ purchase = new Purchase(this); sale = new Sale(this); stock = new Stock(this); } //中介者最重要的方法,叫做事件方法,处理多个对象之间的关系 public abstract void execute(String str,Object...objects); }
抽象同事类:
public abstract class AbstractColleague { protected AbstractMediator mediator; public AbstractColleague(AbstractMediator _mediator){ this.mediator = _mediator; } }
具体的中介者和具体的同事类就不贴出来了,无非是通过多态调用父类的方法。客户端有必要提一下:
public class Client { public static void main(String[] args) { AbstractMediator mediator = new Mediator(); //采购人员采购电脑 System.out.println("------采购人员采购电脑--------"); Purchase purchase = new Purchase(mediator); purchase.buyIBMcomputer(100); //销售人员销售电脑 System.out.println("\n------销售人员销售电脑--------"); Sale sale = new Sale(mediator); sale.sellIBMComputer(1); //库房管理人员管理库存 System.out.println("\n------库房管理人员清库处理--------"); Stock stock = new Stock(mediator); stock.clearStock(); } }
我觉得这里有个比较重要的地方是,需要将中介者注入到每一个具体的同事类中,并且具体的中介者中也有各个同事类的对象,他们是相互关联的。
中介者模式的优点就是减少类间的依赖,把原有的一对多的依赖变成了一对一的依赖,同事类只依赖中介者,减少了依赖,当然也同时减低了类间的耦合。它的缺点呢就是中介者会膨胀的很大,而且逻辑会很复杂,因为所有的原本N个对象直接的相互依赖关系转换为中介者和同事类的依赖关系,同事类越多,中介者的逻辑就复杂。
一句话概括中介者模式:桥接模式+子类依赖关系!
中介者模式小记【原创】相关推荐
- 设计模式(十四)中介者模式
相关文章 设计模式(一)设计六大原则 设计模式(二)单例模式的七种写法 设计模式(三)建造者模式 设计模式(四)简单工厂模式 设计模式(五)观察者模式 设计模式(六)代理模式 设计模式(七)装饰模式 ...
- 设计模式 | 中介者模式(详解)
中介者模式 案例介绍: 编写信息管理模块: 界面组件之间存在较为复杂的交互关系:如果删除一个客户,要在客户列表(List)中删掉对应的项,客户选择组合框(ComboBox)中客户名称也将减少一个:如果 ...
- 设计模式系列 — 中介者模式
点赞再看,养成习惯,公众号搜一搜[一角钱技术]关注更多原创技术文章. 本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章. 前言 23种设计模式速记 单例(si ...
- php中介模式,中介者模式(Mediator pattern)详解及PHP实现
中介者模式是一种行为型模式,它包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用,从而使它们可以松散偶合.当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用,保证这些作用可 ...
- 设计模式之中介者模式(Mediator)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- Python设计模式-中介者模式
Python设计模式-中介者模式 代码基于3.5.2,代码如下; #coding:utf-8 #中介者模式class colleague():mediator = Nonedef __init__(s ...
- 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
[索引页] [源码下载] 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern) 作者:webabcd 介绍 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互 ...
- 17Mediator(中介者)模式
技术交流QQ群:1027579432,欢迎你的加入! 1.Mediator(中介者)模式的动机 在软件构建过程中,经常会出现多个对象互相交互的情况,对象之间常常会维持一种复杂的引用关系.如果遇到一些需 ...
- 中介者模式 调停者 Mediator 行为型 设计模式(二十一)
中介者模式(Mediator) 调度.调停 意图 用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散 而且可以独立地改变它们之间的交互. 中介者模式又 ...
最新文章
- 【HTML5游戏开发】简单的《找不同汉字版》,来考考你的眼力吧
- spark RDD底层原理
- 使用objectdatasource结合数据绑定控件进行简单三层架构的开发
- JavaScript 读取、写入Txt文档
- 创业公司产品经理如何画好原型图
- 傅立叶变换学习(一)初步认识傅立叶变换
- Linux内核tcp时间测量,linux内核 – 测试linux内核中函数的执行时间
- wincc历史数据库_WinCC系统的基本功能介绍——自动化工程师必备
- 微信小程序点击跳转出现背景
- python查看电脑配置_怎么查看电脑配置(教你如何查看电脑配置信息和型号)
- 使用母版頁是內容如何使用CSS和javascript
- mysql varchar,bigint,char三种类型性能的比较
- 学习 | Node.js 之定时任务
- javax maven项目缺少_maven冲突解决流程
- c语言单元测验答案,c语言试题及答案
- 路由器 mac 和 bssid是一个吗
- 说说我是如何拿下腾讯offer的
- OpenStack使用Placement做资源管理时虚拟机无法调度的一次排错记录
- 中国人民解放军郑州计算机学院官网,解放军信息工程大学录取分数线2021
- 带你开发一个完整的 node.js 项目