中介者模式android,Android设计模式-16-中介者模式

1. 定义

又称:调解者/调停者模式

包装了一系列对象相互作用的方式,用来降低这些对象之间的通信复杂性,从中协调充当牵线搭桥的作用

2. 使用场景

系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱,而且难以复用该对象

想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类

3. 优缺点

优点:

使得这些对象不必相互明显作用,从而实现松耦合

当某些对象之间的作用发生改变时,不会影响其他对象,保证独立变化

将多对多的相互作用转化为一对多的相互作用,由复杂的网状结构变为以中介者为中心的星型结构

缺点:中介者会庞大,变得复杂难以维护

4. Android源码中的使用

Android的锁屏(Keyguard)是一个非常重要的模块。包含的功能有:解锁(指纹、图案、PIN等)、锁屏通知显示、快速启动相机、快速拨号、显示日期/时间等。其中KeyguardViewMediator是整个待机解/锁屏业务的调度器,负责调度锁屏界面的相关动作及查询解锁屏状态,其中包含了许多XXXManager的管理器成员变量,如AlarmManager,StatusBarManager,PowerManager等,KeyguardViewMediator则是充当中介者协调这些管理器的状态改变

Binder机制中ServiceManager和Binder Driver充当中介者,协调服务端与客户端

5. 实例演示

以电脑播放CD为例,主板作为中介者,协调cpu,内存,显卡,声卡,光驱等模块,这些模块间等通信都是通过主板进行等,对其中任何一个进行更改(如升级换新)都不会影响到其他模块,只需要调整其与主板间到连接即可,主板再通知其他模块作出相应调整

1. 首先创建一个中介者基类

eb5c0727441f

2. 创建主板类

eb5c0727441f

3. 创建一个模块基类,相当于实际中各模块与主板连接的硬件接口协议或软件驱动协议,这些都是有统一标准的

eb5c0727441f

4. 各模块的实现类,CPU,光驱,声卡,显卡等, 从代码中可以看到,各模块只负责自己职责范围的工作,将处理结果通知给主板,由主板来协调下一步需要做什么,模块间实现解耦

eb5c0727441f

eb5c0727441f

eb5c0727441f

5创建实例,完成播放CD的流程

eb5c0727441f

上面执行cd播放的具体流程如下:

光驱调用load()方法读取cd,读取完成后通知主板-->主板收到通知后,将光驱读取到的数据传给cpu去解码-->cpu解析数据,解析完成后通知主板-->主板收到通知后,将cpu解码出的音视频流传给声卡, 显卡播放-->声卡显卡播放音视频, 至此就完成来cd的播放

我是今阳,如果想要进阶和了解更多的干货,欢迎关注公众号”今阳说“接收我的最新文章

eb5c0727441f

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值