《Android源码设计模式》读书笔记 (17) 第17章 中介者模式
2016-02-21 23:31
423 查看
前言
中介者模式面向的是多类对象定义
定义:包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用.将多对多相互作用转化为一对多的相互作用.优点:可以对依赖关系的类进行解耦使逻辑结构清晰
使用场景:对象之间交互操作,为防止在修改一个对象的行为时,同时涉及修改很多其他对象的行为,来解决耦合问题.
UML类图
Mediator:抽象中介者角色,定义了同事对象到中介者对象的接口,一般以抽象类方式实现.
/** * 抽象中介者 * @author max * */ public abstract class Mediator { public ConcreteColleagueA colleagueA; public ConcreteColleagueB colleagueB; public void setColleagueA(ConcreteColleagueA colleagueA) { this.colleagueA = colleagueA; } public void setColleagueB(ConcreteColleagueB colleagueB) { this.colleagueB = colleagueB; } /** * 抽象终结方法\子类实现 */ public abstract void method(); }
ConcreteMediator:具体中介者角色,从具体的同事对象接收消息,向具体的同事对象发出消息
/** * 具体中介者对象 * @author max * */ public class ConcreteMediator extends Mediator { @Override public void method() { colleagueA.action(); colleagueB.action(); } }
Colleague:抽象同事类角色,定义了中介者对象接口
/** * 抽象同事 * @author max * */ public abstract class Colleague { //中介者对象 public Mediator mediator; public Colleague(Mediator mediator) { super(); this.mediator = mediator; } /** * 同事角色的具体行为,由子类实现 */ public abstract void action(); }
ConcreteColloeague:具体同事类角色,继承于抽象同事类.
/** * 具体同事A * @author max * */ public class ConcreteColleagueA extends Colleague { public ConcreteColleagueA(Mediator mediator) { super(mediator); } @Override public void action() { //将信息递交给中介者处理 } }
实现步骤
书上提供了一个电脑主板充当中介者,其他两个模块通过主板进行通信过程的案例其实总结起来就是:
1.分别初始化Mediator和Colleague抽象类,
2.在具体Mediator类,实现各个Colleague子类的交互.
源码下载
这里就不贴第二个书上的案例了,有兴趣的同学可以直接看书或者下载源码demo.其实感觉中介者模式,有点像以前数学学过的把各个模块错中复杂的相互关系,全部归纳到与公共common类的关系也就是中介者.就实现模块间解耦了.点击下载源码http://download.csdn.net/detail/qq_28690547/9438586
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories