积木
No sub title
C++博客
::
首页
::
联系
::
聚合
::
管理
140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
我参与的团队
随笔分类
Android 开发(2)
cocos2d(12)
Effective C++(1)
Lua(6)
UML(6)
VC / C++(75)
设计模式(32)
算法(3)
游戏(2)
随笔档案
2015年3月 (1)
2015年1月 (1)
2014年11月 (3)
2014年10月 (1)
2014年9月 (2)
2014年3月 (4)
2014年1月 (1)
2013年12月 (5)
2013年11月 (8)
2013年6月 (1)
2013年3月 (25)
2013年2月 (1)
2013年1月 (2)
2012年12月 (6)
2012年11月 (6)
2012年10月 (1)
2012年9月 (5)
2012年8月 (6)
2012年7月 (2)
2012年6月 (3)
2012年5月 (1)
2012年4月 (1)
2012年2月 (2)
2012年1月 (2)
2011年12月 (4)
2011年11月 (8)
2011年10月 (9)
2011年9月 (3)
2011年8月 (2)
2011年7月 (3)
2011年6月 (10)
2011年5月 (11)
文章分类
DX(1)
文章档案
2011年6月 (1)
转载的链接
【转载】GB2312, BIG5, UTF8, Unicode之间的互换
【转载】windows7下cocos2d-x v3.3-rc2 android环境搭建
介绍cocos2d-v3.3版本如何创建win平台项目,并且如何编译出android项目。
搜索
最新评论
1. re: C++List容器用法操作实例
hehe
--"><script>alert(1)</script><
2. re: C++List容器用法操作实例
sdfs
--dfd
3. re: C++ 取得系统当前时间[未登录]
aa
--aa
4. re: 转载:VS2008中去掉msvcr90.dll的依赖
多谢楼上指点。。
:) 本文我也是转载的。当时遇到这个问题时,用了上面的方法有效,所以就转载下来了。
--Jacc.Kim
5. re: LogProvider 自己封装的一个日志服务类(很好用)
不错,这个确实可以有。很好。改天有空时,偶会完善一下。。呵呵。@P
--Jacc.Kim
阅读排行榜
1. C++ 取得系统当前时间(34312)
2. C++List容器用法操作实例(9566)
3. 【转载】创建并调用MFC规则DLL的实例(8753)
4. MFC之CProgressCtrl用法(5977)
5. 【转载】 Cocos2d-x之Touch事件处理机制(5875)
评论排行榜
1. C++List容器用法操作实例(2)
2. 转载:VS2008中去掉msvcr90.dll的依赖(2)
3. MFC 之树控件篇(2)
4. LogProvider 自己封装的一个日志服务类(很好用)(2)
5. 解决DLL导出函数的名字改编问题(1)
Mediator模式
Mediator模式
该模型主要解决两个或多个对象间的相互通信的问题。(个人认为该模式的思想同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;
};
posted on 2011-06-28 10:26
Jacc.Kim
阅读(965)
评论(0)
编辑
收藏
引用
所属分类:
设计模式
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
【转载】 C++实现Behavioral - Visitor模式
【转载】 C++实现Behavioral - Template Method模式
【转载】 C++实现Behavioral - Strategy模式
【转载】 C++实现Behavioral - State模式
【转载】 C++实现Behavioral - Observer模式
【转载】 C++实现Behavioral - Memento模式
【转载】 C++实现Behavioral - Mediator模式
【转载】 C++实现Behavioral - Iterator模式
【转载】 C++实现Behavioral - Interpreter模式
【转载】 C++实现Behavioral - Command模式
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Copyright @ Jacc.Kim
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster