- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十四讲patterns
组件技术——最后一讲 潘爱民 北京大学计算机科学技术研究所 /CompCourse 内容 框架和类库 CORBA overview 复习 framework 领域工程 单个系统 ——〉一类系统 针对应用的抽象 组件库 提供定制功能,允许开发人员对于框架主体部分进行修改 不同层次上的framework 基于二进制代码的framework,例如MMC 基于源代码的framework,例如MFC 基于二进制的framework 接口: 为应用中的组件提供二进制接口 以对象形式封装 以功能为单位 粒度 大而全的接口 小型接口,允许动态发现新的接口 通信模型 用户组件与框架进行通信 用户组件之间如何通信? 通过框架传递信息 通过框架建立直通模型 基于源代码的framework 接口: 一般为抽象类,用户提供虚函数的实现,并注册到主框架中 用户定制的余地比较大 通信模型 用户组件与框架进行通信 用户组件之间容易建立起直通途径 从派生类传播类型到基类的一种模式 意图: 基类有时需要根据子类的类型执行一些功能,而基类又不可能直接得到子类的静态类型 这对于generic programming非常重要,因为编译器要靠静态类型来实例化模板(函数或者类) 解决方案 用虚函数不能解决问题 —— runtime多态性 在子类中插入一个函数,由该函数调用模板函数或者模板类,或者该函数调用基类中的模板成员函数 仅对基于源代码的framework适用 Framework举例 为报社提供一套framework 可重用类库的设计(一) 在所有的系统设计中,可重用类库的设计是难度比较大的,要做到: 使用:灵活性和易用性 功能:广泛性和效率 经验非常重要 实现同样的功能会有许多不同的道路,如何选择?效果怎么样? 类库的基础 是否使用其他的类库?是否使用特殊的平台和编译环境? 参考成功的类库 起点要高 可重用类库的设计(二) 接口的设计 这是类库的关键,会影响到类库的使用 接口的类型:C/C++ 大而全的接口并不理想 接口的语义一定要清晰 facade模式 内存管理 保证内存分配和释放的一致性 使用要方便 [out]参数的资源由谁来申请?谁知道size? 是否使用自定义的内存分配器,例如针对小对象的分配器 可重用类库的设计(三) 使用各种模式 模式是经验,成功的典范 policy模式允许使用者定制类 结构型模式有助于建立起更加合理的结构模型,而不至于层次错综复杂 行为型模式有助于各个类之间有更好的协作模型 创建型模式可以提供各种合理的创建机制 模板类库的特殊性 利用模板类型实现compile-time的预处理 熟悉编译器的特性 控制模板生成代码 可重用类库的设计(四) 行为前置和延后 在基类中提供缺省的实现 纯虚函数 —— 强制子类提供实现 利用functor或者函数指针 要求(必须)子类调用父类的实现 用宏来封装代码 代码风格 类库的优化 优化需要用到内部知识,是否暴露这些知识 允许使用者用policy进行配置,用不同的实现配置类 类似于policy的思想,在细节点上用开关进行控制 可重用类库的设计(五) 类库的调试 类库内部调试,使用assert支持 类库的测试 比应用系统的测试更加严格 类库的发行 是否提供源代码? 文档 编译设置 可重用类库的设计(六) 举例:MFC/ATL MFC 同时也具有源代码框架的结构 传统意义上的C++类库,对Win32进行了封装 以便于使用为主要目标,优化较少 用到了许多patterns,吻合Windows应用模型 涉及到许多类库设计技术 与Wizard结合产生基本代码 ATL 用到了generic programming中许多新的技术 模板技术 优化比较突出 CORBA Overview ORB(Object Request Broker ) Interface Definition Language (IDL) CORBA Communications Model: IIOP CORBA Object Model: IOR CORBA Clients and Servers client stubs and server skeletons CORBAservices and CORBAfacilities CORBA结构 CORBA Specification overview OMG IDL Interface: ORB Interface、DII/DSI、Interface Repository POA Interoperability GIOP、IIOP、IOR Mapping COM、Automation C mapping、C++ mapping、SmallTalk Service Specificati
文档评论(0)