中介者模式的意图为:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式的结构图如下:

在 ANDROID系统中keyguard的功能实现采用了中介者模式,用来中介keyguard相关的请求,包括查询keyguard的状态,影响keyguard应当显示和复位的电源管理事件,以及当keyguard显示时对窗口管理的通知事件和来自keyguard视图本身的关于keyguard是否成功unlocked的事件等。相关UML类图如下:

其中KeyguardViewMediator作为中介者角色,与电源管理、用户管理、报警管理、声音管理、状态条管理、KeyguardViewManager、KeyguardDisplayManager、KeyguardUpdateMonitor等服务或对象交互, 读取相关状态,执行和触发keyguard事件相关的功能等 ,而KeyguardViewManager、KeyguardHostView、KeyguardUpdateMonitor类通过相关回调向KeyguardViewMediator传送Keyguard视图本身和keyguard有关状态更新方面的事件, 另外KeyguardService服务也是通过KeyguardViewMediator查询keyguard的状态 并通过IKeyguardService接口对外提供keyguard的状态信息。

android设计模式应用--中介者模式相关推荐

  1. Android设计模式之——中介者模式

    一.介绍 中介者模式(Mediator Pattern)也称为调解者模式或调停者模式,Mediator本身就有调停者和调解者的意思. 在日常生活中调停者或调解者这个角色我们见得比较多的是"和 ...

  2. 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)

    [索引页] [源码下载] 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern) 作者:webabcd 介绍 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互 ...

  3. 设计模式(中介者模式-对象去耦)

    声明:本系列文章内容摘自<iOS设计模式> 中介者模式 用一个对象来封装一系列对象的交互方式.中介者使个对象不需要显式地相互调用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 何时 ...

  4. Java设计模式之中介者模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  5. 软件设计模式之中介者模式实验

    软件设计模式之中介者模式实验 一.实验目的 掌握软件设计模式中的中介者模式,能够用中介者模式编写程序,解决实际问题. 二.实验内容与要求 内容:有个租房中介为房主和租赁人提供租房服务,请用中介者模式对 ...

  6. 走穿java23种设计模式--18中介者模式详解

    走穿java23种设计模式–18中介者模式详解 中介者模式也称调停者模式,是一种比较简单的模式. 一.中介者模式的现实场景 蔡良因为上次表白时对方只看重他的物质方面,所以他对女朋友这个问题有点失望.因 ...

  7. 中介者模式android,Android[高级教程] 设计模式之六 中介者模式(二)

    我们还是接着上一章节的中介者模式,这次我们来重构一下,唐僧只告诉小妖让他的徒弟们来救他,至于小妖通知谁,他不管,反正就是三个徒弟,小妖也想省事,就看见谁就通知谁呗.于是,我们的代码修改成: publi ...

  8. 设计模式之中介者模式---Mediator Pattern

    模式的定义 中介者模式定义如下: Define an object that encapsulates how a set of objects interact.Mediator promotes ...

  9. 设计模式之中介者模式(Mediator)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

最新文章

  1. Dockerfile镜像优化方案指引
  2. merge into语句的使用
  3. 把 Eclipse 中的工程 Push 到 Github(适用 Windows 平台)
  4. 内网能PING通TELNET通不能访问解决
  5. 华为如何在开发者选项观察错误日志_资讯:华为Mate 40 Pro屏幕供应商曝光;iPhone 13第一版原型机曝光;王者荣耀日均日活用户过亿...
  6. NodeSchool: JavaScript函数式编程
  7. 关于解决vivado error:add_1 must be in range [-1,DEPTH-1] 问题
  8. Unity实现鼠标点击指定位置导航角色
  9. Linux系统蓝牙WiFi抓包命令
  10. c语言车辆管理程序,用c语言编的车辆管理
  11. 谈谈“天轰穿”老师对VS2005的视频讲座
  12. WinRAR下载官方免费版
  13. 谈谈那些基础但不简单的股票数据
  14. 企业逼迫员工离职,员工可以收集哪些证据进行维权?
  15. 医学影像组学人工智能应用培训班
  16. 模型量化从1bit到8bit,二值到三值
  17. WebGIS地图相关学习笔记
  18. Python获取QQ音乐某个歌手的歌单。
  19. flutter升级AS和gradle后编译出错(No signature of method: build_gbqp6.android())错误
  20. 江苏计算机学业水平测试多少分过关,江苏学业水平测试2021年考试时间:合格性考试30分能过吗?...

热门文章

  1. Pulling is not possible because you have unmerged files.
  2. EMC测试仪器_EMC测试整改流程及常见问题
  3. ctf show-web入门 php特性篇部分题解
  4. 设计模式——模板设计模式
  5. 希腊字母发音对照表及其latex命令
  6. DeltaPQ: Lossless Product Quantization Code Compression for High Dimensional Similarity Search
  7. Hbook笔记 - 免费、简约、大方的Markdown笔记
  8. 使用Python读取markdown文件并统计字数
  9. Python生成excel表格并设置样式
  10. 动手学pytorch笔记整理12