CACE中的设计模式应用场景

CACE中的设计模式应用场景

ID:36611827

大小:230.54 KB

页数:7页

时间:2019-05-12

CACE中的设计模式应用场景_第1页
CACE中的设计模式应用场景_第2页
CACE中的设计模式应用场景_第3页
CACE中的设计模式应用场景_第4页
CACE中的设计模式应用场景_第5页
资源描述:

《CACE中的设计模式应用场景》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、C++ACE中的设计模式应用场景最近在整理以前所看文章内容时,发现了几篇2003年程序员合订本里关于ACE的文章,当年这几篇文章中所谈到的内容就让人非常兴奋,因为在那个国内热火朝天学习设计模式的几年里,这几篇文章因为其内容涉及到了bridge,strategy,adapter,facade等模式在这个网络通信框架中实打实的应用,让我切身体会到了面向对象设计模式的强大火力。同时因为这几篇文章绝不是我们在学习模式应用时想当然的东西,决不是简单的几句玩笑或不成熟的例子所能同日而语。所以我感觉还是把这几篇文章中的核心内容保存到网上比较好。而这样

2、做的目的有三:一是给自己留了个备份,免得将来书在搬家或因为别的原因丢了。二是也希望能有更多对设计模式感兴趣但却没看过这几篇文章的朋友不要有失之交臂的感觉。三是让我感觉最有必要的一点就是有些个别站点居然凭借自己有这方面的论文内容去卖钱(手机充值方式),我想做为原作者马维达先生看了之后也会感到很不舒服。这也是让我感到“屎可忍而尿不可忍”的地方。好了,说了一堆废话之后开始今天的正文。在正文开始之前,有必要先解释一下什么是ACE,即AdapterCommunicateEnvirment,"适配器通信环境",这是一个C++开发的网络通信框架,其自

3、身是开源的。因为其诞生时间早(与Linux同一年出生),且其所提供的功能很好很强大,我们可以使用它完成可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步等等。且代码开发非常规范(大约100万行精心构造的C++代码),是一部不可多得的学习教材。该框架的创始人信息如下:DouglasC.Schmidt,美国Vanderbilt大学电子工程与计算机科学系教授,ACE与TAO项目的创始人。(从美国海军到CERN物理实验室

4、,从BoeingAdvancedAvionicsSystems到都能看到这两个软件的踪影)他是中间件技术的先驱之一,在相关领域发表了百余篇学术论文。包括Microsoft在内的许多公司都受到了他在通信软件技术方面的贡献的影响(国内也有一些网游公司使用该框架作为其通信机制实现平台)。注:因为这篇文章不是面向初学者的文章,而是对那些有一定模式使用经验,同时也对上面所说的那几种设计模式有一定心得的朋友。相信当您看到本文中所说的几个模式的应用场景和最终的实现结果后,会有某些心得。当然本文的内容大部分还是来自于马先生的文章,这里决不是抄袭,而是一

5、种回顾,当然如果您感到本人很不耻,把别人的东西拿过来给自己帖金,那么还是请您不要再看了。因为我从没有感到这是在给我自己写,而是如上面的三个目的那样,所以当您看完本文后,不必说我的人品怎么怎么样,而是应该把注意力转移到模式的应用场景中去,结合自己的开发设计心得来进行回味,而这才是我写的目的。首先介绍一下Bridge(桥模式)在ACE框架中的运用:通信软件常常要对各种类型的事件进行多路分离、并进通行相应的处理。为使各种事件驱动的处理活动统一起来、并得以自动化,ACE提供了叫做ACE_Reactor的事件多路分离和事件处理器分派框架。同时,为

6、了保证应用的可移植性,无论是在何种操作系统上,也无论底层使用了何种事件多路分离机制,ACE_Reactor所提供的接口都是一样的;并且,在有些平台上,还可以根据实际需要,在运行时更换底层所使用的事件多路分离机制(比如在Windows上既可以使用WaitForMultipleObjects(),也可以使用select())。Bridge模式正是ACE_Reactor具有这样的灵活性和可移植性的关键所在。值得特别注意的是ACE_Reactor的私有成员reactor_impl_,这个指针变量正是ACE_Reactor中的“桥”实现的关键所在

7、。ACE是具有高度可移植性的跨平台通信软件开发框架,在各种平台上提供相同的开发接口,是其重要目标之一。上面所描述的ACE_Reactor接口及相关接口,在ACE支持的各种平台上都是相同的,但因为这些平台提供的多路分离机制各不相同,所以在开发ACE_Reactor时,必须为不同的平台提供不同的具体实现。要达到这一目的,一般的做法是为每种平台定义一个继承自ACE_Reactor类的子类,在子类中提供该平台专用的具体实现。但正如GoF在DesignPattern一书中所说,这样的继承把实现与抽象永久性地绑定在一起,使得我们难以独立地修改、扩展

8、和复用各种抽象和实现。正是基于这样的考虑,ACE的开发者在实现ACE_Reactor时,采用了Bridge模式。下图以ACE_Select_Reactor和ACE_WFMO_Reactor为例,说明了体现在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。