13. C++语言和软件重用.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章 设计模式(Design Pattern ) 例:单实例对象模式 13.2.3 与对象行为相关的模式 行为(behavior)是指对象对请求的可预知反应。 与对象行为相关的模式描述对象之间的通信关系,处理各种在运行时难以跟踪的复杂控制流,描述一组对象怎样相互协作以完成其中任一对象都无法单独完成的任务。 5.职责链(Chain of Responsibility)模式: 职责链模式建立一些对象间的链接关系,使请求沿着该链传递,直到链上的某一个对象处理它为止。链上的多个对象都有机会接收和处理请求,从而避免请求的发送者和接收者之间的耦合关系。 例如图形用户界面中的上下文有关帮助机制,用户可在当前界面以多种方式提交请求,启动帮助。帮助信息窗口以含有进一步帮助的链接信息。这种链接式对象请求处理通常从第一个接收请求的对象开始,或者自己处理该请求,或者转发给链中下一个候选对象。 Handler Request() Concreat1 Request() Concreat2 Request() Client successor (a) 职责链结构 aClient aHandler aConcreat successor aConcreat successor (b) 职责链对象链接 图13.6 职责链模式结构及其对象结构 实现职责链的代码示例: class Handler{ public: Handler(Handler* sp): successor(sp){} virtual void Request(); private: Handler* successor; }; 这是一个事件处理句柄接口,其子类可以定义自己的Request()实现。基类的缺省实现如下: virtual void Handler::Request() { if (successor) successor- Request(); } 这是一个事先设定的固定的链,只要后继存在就会无条件转发。若在Request()中用不同的请求参数来分派请求,可以实现更灵活的链接。 void Request(AbstrctRequest* theRequest) { switch(theRequest-Getkind()) { case 1: Request((AbstrctRequest *) theRequest); break; case 2: //… default: //… break; } } 6.命令(Command)模式 命令模式又称事务(Transaction)模式,命令模式用于封装向某个对象的请求。 所谓请求,就是应用程序的操作人员通过图形用户界面(GUI)构件如按钮、图标、菜单项等发出的操作命令。 命令模式通过在请求调用对象和请求的执行对象之间增加一个Command中间对象,用以消解多对多复杂性。 * * 13.2 可重用的面向对象设计模式 13.2.1 设计模式概述 1. 面向对象设计的任务: 应用系统设计 工具库设计 框架设计 其中,框架是已形成源代码的可重用软件体系结构。它体现了应用程序的模块组成关系。框架及框架中的各个模块是形形色色各具特色的。 设计模式(Design Pattern)描述了软件开发过程中若干重复出现的问题的解决方案,这些方案不是由过程、算法等底层程序构造实体实现,而是由软件系统中类与类之间或不同类的对象之间的共生关系组成。 设计模式可以帮助软件设计人员学习、重用前人的经验和成果。 设计模式的分类整理最早见于Erich Gamma在德国慕尼黑大学的博士论文。 1995年,Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides合著的 《Design Patterns:Elements of Reusable Object_Oriented Software》系统地整理和描述了23个精选的设计模式(goF模式),为设计模式的学习、研究和推广提供了良好的范例。 ClassName Function1() Function2() … DataMenber1 DataMenber2 … 类的表示: 子类关系: BaseClass Subclass 2.设计模式的描述符号 (1)类和对象的表示 ? 对象及对象链接: aObject anotherObject (2)连接的表示 ???? ? 例如:由类A创建类B的对象 ? ClassA ClassB 对象创建关系: 示例代码: classA::create() { return new ClassB;} 实例引用关系: Cl

文档评论(0)

xiaofei2001128 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档