软件设计模式之行为模式

软件设计模式之行为模式

ID:44971255

大小:2.62 MB

页数:40页

时间:2019-11-06

软件设计模式之行为模式_第1页
软件设计模式之行为模式_第2页
软件设计模式之行为模式_第3页
软件设计模式之行为模式_第4页
软件设计模式之行为模式_第5页
资源描述:

《软件设计模式之行为模式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第四章行为模式课程目标Observer模式Iterator模式Strategy模式Template模式Visitor模式ChainofResponsibility模式Command模式其他模式,如Interpreter模式、Mediator模式等体验项目——<实现在窗体中使用鼠标的画图功能>本章体验项目的主要功能是使用Command模式实现窗体中鼠标画图功能,该程序主要由以下几个部分组成:程序运行完成后,拖动鼠标在窗体上画出“Hello”字符(1)命令接口Command,定义命令方法。(2)具体命令角色MacroCommand和DrawCommand类,这两个类都实现Comm

2、and接口,DrawCommand实现画图命令,MacroCommand类定义对命令的新增、执行和删除等方法。(3)请求接口Drawable,DrawCanvas类实现Drawable接口,定义与具体请求相关的操作。(4)客户端,继承JFrame并实现ActionListener和MouseMotionListener接口,创建窗体界面和各种事件行为模式概述行为模式涉及到算法和对象间职责的分配,行为模式描述了对象和类的模式,以及它们之间的通信模式,这些模式刻划了在程序运行时难以跟踪的复杂的控制流。可分为行为类模式和行为对象模式两种:(1)行为类模式使用继承机制在类间分派行为。

3、(2)行为对象模式使用对象复合而不是继承。一些行为对象模式描述了一组对等的对象怎样相互协作以完成其中任何一个对象都无法单独完成的任务。这里一个重要的问题是对等对象如何互相了解对方。对等对象可以保持显式的对对方的引用,但那会增加它们的耦合度。在极端情况下,每一个对象都要了解所有其他的对象。ChainofResponsibility模式ChainofResponsibility模式即职责链模式,在有不止一个对象可以处理或实现客户请求的时候,责任链模式(CoR)会顺序地给每一个对象一次处理请求的机会。一个较好的例子就是Java的异常处理机制,当程序中发生异常时,将会比较与catch

4、所捕捉的异常是否相符合,如果符合就执行所设定的处理,如果都没有对比到适当的异处理,就会将异常丢出trycatch程序块之外。模式介绍主要适用于以下情况:有多个对象可以处理一个请求,但哪个对象来处理该请求是在运行时刻自动确定的。想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。希望动态的指定处理某个请求的对象集合。ChainofResponsibility模式结构图职责链模式结构图如下:Handler:定义一个处理请求的接口。ConcreteHandler:处理它所负责的请求,并可访问在该链中它的后继者。如果可处理该请求,就处理;否则将该请求转发给它的后继者。Cli

5、ent:向链上的具体处理者即ConcreteHandler对象提交请求。ChainofResponsibility模式示例publicinterfaceHandler{publicvoidhandleRequest(charc);}publicclassCharacterHandlerimplementsHandler{privateHandlersuccessor;publicCharacterHandler(Handlersuccessor){this.successor=successor;}publicvoidhandleRequest(charc){if(Chara

6、cter.isLetter(c)){System.out.println("CharacterHandler类处理请求,返回结果:你输入的是字元");}else{successor.handleRequest(c);}}}publicclassNumberHandlerimplementsHandler{privateHandlersuccessor;publicNumberHandler(Handlersuccessor){this.successor=successor;}publicvoidhandleRequest(charc){if(Character.isDigi

7、t(c)){System.out.println("NumberHandler类处理请求,返回结果:你输入的是数字");}else{successor.handleRequest(c);}}}publicclassSymbolHandlerimplementsHandler{publicvoidhandleRequest(charc){if(Character.isDefined(c)){System.out.println("SymbolHandler类处理请求,返回结果:你输入的是符号");}els

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

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

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