1 / 40
文档名称:

软件设计模式之行为模式教学文稿.ppt

格式:ppt   大小:2,943KB   页数:40页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件设计模式之行为模式教学文稿.ppt

上传人:nnyoung 2019/12/19 文件大小:2.87 MB

下载得到文件列表

软件设计模式之行为模式教学文稿.ppt

文档介绍

文档介绍:mand模式其他模式,如Interpreter模式、Mediator模式等体验项目——<实现在窗体中使用鼠标的画图功能>mand模式实现窗体中鼠标画图功能,该程序主要由以下几个部分组成:程序运行完成后,拖动鼠标在窗体上画出“Hello”字符(1)mand,定义命令方法。(2)mand类,mand接口,mand实现画图命令,mand类定义对命令的新增、执行和删除等方法。(3)请求接口Drawable,DrawCanvas类实现Drawable接口,定义与具体请求相关的操作。(4)客户端,继承JFrame并实现ActionListener和MouseMotionListener接口,创建窗体界面和各种事件行为模式概述行为模式涉及到算法和对象间职责的分配,行为模式描述了对象和类的模式,以及它们之间的通信模式,这些模式刻划了在程序运行时难以跟踪的复杂的控制流。可分为行为类模式和行为对象模式两种:(1)行为类模式使用继承机制在类间分派行为。(2)行为对象模式使用对象复合而不是继承。一些行为对象模式描述了一组对等的对象怎样相互协作以完成其中任何一个对象都无法单独完成的任务。这里一个重要的问题是对等对象如何互相了解对方。对等对象可以保持显式的对对方的引用,但那会增加它们的耦合度。在极端情况下,每一个对象都要了解所有其他的对象。ChainofResponsibility模式结构图职责链模式结构图如下:Handler:定义一个处理请求的接口。ConcreteHandler:处理它所负责的请求,并可访问在该链中它的后继者。如果可处理该请求,就处理;否则将该请求转发给它的后继者。Client:向链上的具体处理者即ConcreteHandler对象提交请求。ChainofResponsibility模式示例publicinterfaceHandler{ publicvoidhandleRequest(charc);}lassCharacterHandlerimplementsHandler{ essor; haracterHandler(essor){=essor;} publicvoidhandleRequest(charc){ if((c)){ ("CharacterHandler类处理请求,返回结果:你输入的是字元"); } else{(c);} }}lassNumberHandlerimplementsHandler{ essor; umberHandler(essor){=essor;} publicvoidhandleRequest(charc){ if((c)){ ("NumberHandler类处理请求,返回结果:你输入的是数字"); } else{(c);} }}lassSymbolHandlerimplementsHandler{ publicvoidhandleRequest(charc){ if((c)){ ("SymbolHandler类处理请求,返回结果:你输入的是符号"); }else{("请求未被处理");} }}处理字元处理数字处理符号职责链模式优势和不足职责链模式主要有以下几个优点:降低耦合度职责链模式不足:效率低,一个请求的完成可能要遍历到最后才可能完成。扩展性差,在该模式中,一定要有一个统一的Handler接口。mand模式即命令模式,该模式把一个请求或者操作封装到一个对象中,并将发出命令的责任和执行命令的责任分割开,委派给不同的对象。允许请求的一方和发送的一方独立开来。模式介绍主要适用于以下情况:抽象出待执行的动作以参数化某对象,你可用过程语言中的回调(callback)函数表达这种参数化机制。在不同的时刻指定、排列和执行请求。mand对象可以有一个与初始请求无关的生存期。支持取消操作。支持修改日志。mand:声明执行操作的接口。mand:将一个接收者对象绑定于一个动作,调用接收者相应的操作,以实现execute()方法。Receiver:知道如何实施与执行一个请求相关的操作,任何类都可能作为一个接收者。Invoker:如果该命令可执行,则要求该命令执行这个请求,mand对象。Client:创建一个具体命令对象并设定它的接收者。