Android设计模式之(16)----中介模式
来源:互联网 发布:06年韦德总决赛数据 编辑:程序博客网 时间:2024/06/03 16:20
中介模式
中介模式属于行为模式。
理解起来很简单,例如公司新接了好几个项目,那如何告诉公司的各位同学要负责项目是哪一个呢呢,不可能一个人一个人的互相转达
这个时候为了统一通知,就采用公司的企业邮箱统一发送放假消息到各个同学的个人企业邮箱来进行通知
这时公司的企业邮箱就充当了一个中介者的角色.
对比两种情况:
- 没有中介者的情况
- 通过公司邮箱终结者
应用场景
- 多个对象之间存在相互通信关系
- 多个对象彼此依赖,后续希望对象彼此之间不再彼此依赖,不再彼此知道,只通过中间件进行
代码示例
(一)抽象的中介者通知
public interface Mediator { void doSomeThings();}
(二)抽象的公司同学负责做什么
public abstract class Student { public Mediator mediator; public Student(Mediator mediator) { this.mediator = mediator; } public abstract void doSomeThings();}
(三)具体的同学具体做的事
同学A:
public class StudentA extends Student { public StudentA(Mediator mediator) { super(mediator); } @Override public void doSomeThings() { System.out.print("\n" + "通知:StudenA负责A项目"); }}
同学B:
public class StudentB extends Student { public StudentB(Mediator mediator) { super(mediator); } @Override public void doSomeThings() { System.out.print("\n" + "通知:StudetB负责B项目"); }}
(四)具体的中介通知
public class ConcreteMediator implements Mediator { private StudentA studentA; private StudentB studentB; public void setStudentA(StudentA studentA) { this.studentA = studentA; } public void setStudentB(StudentB studentB) { this.studentB = studentB; } @Override public void doSomeThings() { studentA.doSomeThings(); studentB.doSomeThings(); }}
调用方式
ConcreteMediator concreteMediator = new ConcreteMediator(); concreteMediator.setStudentA(new StudentA(concreteMediator)); concreteMediator.setStudentB(new StudentB(concreteMediator)); concreteMediator.doSomeThings();
显示结果
通知:StudenA负责A项目通知:StudetB负责B项目
总结
- 优点
- 实现中介一对多的关系,让各个对接点职责清晰
- 灵活容易维护扩展,需要添加关系只需要和中介者通信即可
- 缺点
- 如果一个中介者要处理很多关系,类会变得庞大难以维护(其实也可以通过在构建另外一个中介者来维护,算不上多大的缺点)
github地址
阅读全文
0 0
- Android设计模式之(16)----中介模式
- 设计模式之中介模式
- 设计模式之中介模式
- 设计模式之中介者模式(调停模式)
- Android设计模式之——中介者模式
- 设计模式之中介者
- 设计模式 之 中介者
- 设计模式之中介者
- 设计模式系列课程16之【中介者模式】
- Android[高级教程] 设计模式之六 中介者模式(一)
- Android[高级教程] 设计模式之六 中介者模式(二)
- 设计模式之(十七)中介者模式(mediator)
- 23种设计模式之中介者模式(Mediator)
- 设计模式之Mediator(中介者)模式(理论篇)
- 设计模式之Mediator(中介者)模式(应用篇)
- 设计模式之08中介者模式(笔记)
- C++设计模式之十七:Mediator(中介者模式)
- Java设计模式之十八(中介者模式)
- AngularJS中重新加载当前路由页面
- caffe 安装bug
- Uva 11248 Frequency Hopping (最大流+残余网络)
- POj-Feel Good-单调栈
- idea插件大全
- Android设计模式之(16)----中介模式
- html、css、js加载顺序
- C# 中数据集Dataset
- 设置EditText只能输入字母,数字和英文字符
- MySQL查询某一列中不是数字
- maven项目刷新的几种方法
- 复习总结04:HBase(含重要原理图!吐血整理HBase存储机制!)
- 下一个排列-LintCode
- Ubuntu下安装及配置Postgresql