Mediator模式
来源:互联网 发布:ubuntu openjdk 路径 编辑:程序博客网 时间:2024/05/16 18:09
该模型主要解决两个或多个对象间的相互通信的问题。(个人认为该模式的思想同Observer模式的思想还是有点类似的。表面上看,他们所解决的问题类型根本不同,那为什么我会这么认为了?后面再说明)。按理说,各对象间的通信假如:ObjA与ObjB要进行通信。方法有好多种。比如:可以在它们内部各存一份对方的引用。在一方变动时,调用另一方进行同步即可。但确实如果系统大而复杂时,这将显示的不那么清晰。因此,就希望中间会有个调停者。Mediator模式就因此而生。此时,ObjA与ObjB内部只存为一份Mediator(MediatorObj)对象的引用。在对象变动时,只需调用MediatorObj的相关接口,通知其他对象需要同步更新即可。因此,对ObjA或ObjB或其他的任何对象来说,它们有可能根本不知道还有其他的对象存在。(如:ObjA可能不知道ObjB的存在。)但通过MediatorObj对象,却达到了ObjA与ObjB的同步作用。(现在想下,是不是与Observer模式有点类似?因为,如果在Observer模式的实现上,抽象出一个IObserverable来。那通过IObserverable对象,可以通知所有View的更新)。
class CClassA;class CClassB;class CMediator{public: CMediator(){} CMediator(CClassA* pObjA, CClassB* pObjB) { this->m_pObjA = pObjA; this->m_pObjB = pObjB; } void DoSyncFromAToB(void) { this->m_pObjB->xxx } void DoSyncFromBToA(void) { this->m_pObjA->xxx }private: CClassA* m_pObjA; CClassB* m_pObjB;};class CClassA{public: CClassA(){} CClassA(CMediator* pMediator) { this->m_pMediator = pMediator; } void DoAction(void) { // do some work here // 通知其他对象,需要同步 this->m_pMediator->DoSyncFromAToB(); }private: CMediator* m_pMediator;};class CClassB{public: CClassB(){} CClassB(CMediator* pMediator) { this->m_pMediator = pMediator; } void DoAction(void) { // do some work here // 通知其他对象,需要同步 this->m_pMediator->DoSyncFromBToA(); }private: CMediator* m_pMediator;};
- Mediator模式
- MEDIATOR 模式
- Mediator模式
- Mediator 模式
- Mediator 模式
- Mediator模式
- Mediator模式
- Mediator模式
- Mediator模式
- Mediator模式
- Mediator 模式
- Mediator模式
- Mediator模式
- Mediator模式
- [设计模式]Mediator模式
- 中介者(Mediator)模式
- Mediator中介者模式
- 设计模式之Mediator
- NVIDIA计划推出ARM架构高性能CPU
- Google工程师多图详解Android系统架构
- 使用Ant自动构建Android版本
- Glib交叉编译:g__cancellable_lock undeclared!&HEADER/C_IN undeclared!&undefined reference to "localeconv"
- ehcache缓存的详细配置
- Mediator模式
- 三款工作流引擎比较:WWF、netBPM 和 ccflow
- 在Android上实现Junit单元测试的四部曲
- 王爽《汇编语言》第9章 实验8 分析一个奇怪的程序
- 周鸿祎谈产品:像怀胎一样怀产品,要厚着脸皮听批评
- 有效控制Android应用程序的耗电量
- Android术语列表概览
- 全方位解读Android多媒体框架源码
- Android之高仿记事本、备忘录、便签