软件设计模式之行为模式.ppt_第1页
软件设计模式之行为模式.ppt_第2页
软件设计模式之行为模式.ppt_第3页
软件设计模式之行为模式.ppt_第4页
软件设计模式之行为模式.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章,行为模式、课程目标、观察程序模式Iterator模式Strategy模式Template模式Visitor模式Chain of Responsibility模式Command模式其他模式(例如Interpreter模式、)牙齿方案主要由以下部分组成:节目运行完成后,通过拖动鼠标在表单中绘制“Hello”字符,(1)使用命令介面Command定义命令方法。(2)特定命令角色MacroCommand和DrawCommand类,这两个类都定义了方法,如Command介面实现、DrawCommand实现绘制命令,以及MacroCommand类为命令添加、运行和删除。(3)请求介面Drawabl

2、e,DrawCanvas类实现Drawable接口并定义特定请求相关操作。(4)实施客户端、JFrame继承和ActionListener和MouseMotionListener介面,创建西餐介面和各种事件,行为模式概述,行为模式描述算法和对象之间的角色分配,行为模式描述对象和类的模式,行为类模式和行为对象模式,(1)行为类模式使用继承机制在类之间分配行为。(2)行为对象模式使用对象合成而不是继承。某些行为对象模式说明了相应的一组对象如何徐璐协作,以执行这些对象中任何一个都不能单独执行的任务。这里的一个重要问题是对等对象如何相互理解。对等物件可以保持彼此的明确参考,但会增加管接头。在极端情况下

3、,每个对象必须了解所有其他对象。职责模式,职责模式是职责链模式,当有多个对象可以处理或满足客户请求时,配置链职责(CoR)将按顺序为每个对象处理请求的机会好的示例是Java的异常处理机制,当程序遇到异常时,该机制会比较异常是否与catch捕获的异常匹配,如果匹配,则执行设置的处理,如果不比较相应的处理,则将异常导出到try catch节目块之外。方案简介,主要适用于以下情况:多个对象可以处理一个请求,但处理请求的对象在运行时自动确定。尝试向多个对象之一提交请求,而不明确指定收件人。试图动态指定处理请求的对象集合。Chain of Responsibility模式映射和角色链模式映射如下所示:H

4、andler:定义处理请求的接口。ConcreteHandler:处理您负责的请求,并访问链的继承人。如果可以处理请求,则处理。否则,将请求转发给继任者。Client:将请求提交给链中的特定处理者ConcreteHandler对象。,Chain of Responsibility模式示例,public interface handler public void handle request(char c);public class character handler implements handler private handler successor;public character ha

5、ndler(handler successor)this . successor=successor;public void handle request(char c)if(character . is letter(c)system . out . print ln(character handln)Else SuSEpublic class number handler implements handler private handler successor;public number handler(handler successor)this . successor=successo

6、r;public void handle request(charc)if(character . is digit(c)system . out . print ln(number handler类处理Elsepublic class symbol handler implements handler public void handle request(char c)if(character . is defined(c)sysses es、字符处理、数字处理、符号处理、角色链模式优点和不足、角色链模式主要有以下几个茄子优点:效率低下、在牙齿模式下,必须具有集成的Handler界面。提高将

7、责任分配给对象的灵活性,Command模式,Command模式,即将命令模式、请求或任务封装到一个对象中,将执行命令的责任与执行命令的责任分开,然后将这些责任委派给其他对象。允许请求的一方独立于发送方。模式介绍主要适用于以下情况:可以通过抽象要执行的操作来参数对象。在处理语言中,可使用“回调”(callback)函数表示这些参数机制。在其他时间指定、排序和提交请求。Command对象可以具有独立于初始请求的生命周期。支持取消操作。支持修改日志。将系统配置为组件的原语操作的高级操作。Command模式映射,命令模式映射是:Command:声明执行操作的接口。ConcreteCommand:将接收

8、方对象绑定到动作,并调用接收方的相应操作以实现execute()方法。Receiver:如果知道如何实现请求相关任务,则任何类都可以是接收方。Invoker:在命令可以执行的情况下,必须运行牙齿请求并保存ConcreteCommand对象。Client:创建特定命令对象并设置收件人。Command模式示例,Command模式广泛用于介面设计。例如,在表单中添加四个按钮和一个文本框。其中三个牙齿更改文本框颜色,第四个按钮关闭表格。具体实施包括:interface command interface public void process event();import javax . swing

9、. jbutton;class blue extends jbutton implements command interface public void process event()client . tf1 . set background(color .public blue(string name)super(name);class button handler implements action listener public void action performed(action event e)command interface command obj=(command int

10、erface command obj=,自定义四个按钮类,每个按钮类继承JButton并实现CommandInterface接口。Blue类执行文本框颜色为 BLUE 、cyan类执行文本框颜色为 Cyan 、red类执行文本框颜色为 Red 的任务以及ExitButton类关闭表单的任务。因为它们都很相似,所以只提供Blue类的参考代码。Command模式的优点和缺点:使用Command模式可能会导致系统中有太多特定的Command类。某些系统可能需要数十、数百或数千个特定的Command类,这可能会使这些系统上的Command模式不现实。Command模式将“执行工作请求”对象和“知道如何

11、执行工作的对象”分开。可以将多个命令组合到一个复合命令中。,因为不需要修改现有类,所以添加新command很容易。Command模式的优点是可以像使用和继承任何其他对象一样使用和继承Command对象。Iterator模式和Iterator模式是遍历集合类的标准访问方法的迭代器模式。从各种类型的集合类中抽象访问逻辑,以避免客户端暴露程序集的内部结构。模式简介主要适用于以下情况:,提供了允许遍历各种聚合结构的集成介面(即支持多态迭代)。Iterator模式映射,迭代器模式映射定义了:Iterator:元素访问和遍历接口。ConcreteIterator:实现Iterator接口的特定迭代器,该接口在遍历聚合对象时跟踪当前位置。Aggregate:定义用于生成相应迭代器的接口。ConcreteAggregate:实现Aggregate接口的聚合对象,它实现了返回ConcreteIterator实例的方法。Iterator模式示例,public interface my Iterator public boolean has next();public Object next();import Ja

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论