




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1. Command模式: 简单来说就是每一个请求过来,都有一个事物去处理。在最初的设计模式书当中,command模式最主要的功能是用来实现undo(撤销)功能的。首先是抽象类Command:package mand;/提供一个抽象类来规定方法的名称为execute和undopublic abstract class Command public abstract void execute();public abstract void unDo();两个具体的类的实现:HugCommand和ShoppingCommandpackage mand;public class HugCommand extends Command /都实现抽象类command当中的两个方法。execute()和undo()Overridepublic void execute() System.out.println(hug);Overridepublic void unDo() System.out.println(open your arms);package mand;public class ShoppingCommand extends Command /都实现抽象类command当中的两个方法。execute()和undo()Overridepublic void execute() System.out.println(zoo);Overridepublic void unDo() System.out.println(undo zoo);命令者类:当有order方法,其中调用了被命令者(boy)的addCommand方法,用来给boy添加任务:各种command。package mand;public class MM private String name;public String getName() return name;public void setName(String name) = name;/在order当中可以有多个command, c1,c2.public void order(Boy b) Command c1 = new ShoppingCommand();/调用了boy当中的addCommand方法,把c1,c2都添加到他的arraylist当中去b.addCommand(c1);Command c2 = new HugCommand();b.addCommand(c2);b.executeCommands();被命令者类:package mand;import java.util.ArrayList;import java.util.List;public class Boy private String name;/用一个arraylist来存放命令列表private List commands = new ArrayList();public String getName() return name;public void setName(String name) = name;public void pursue(MM mm) public void doSomeThing() /boy提供一个方法,把命令添加到boy的arraylist当中public void addCommand(Command c1) mands.add(c1);/把commands里面所有的命令拿出来,每个都执行。public void executeCommands() for(Command c : commands) c.execute();/undo的时候,要用另外一个list来记录,boy已经执行了哪些command。/在undo的时候,就根据堆栈的方式,一条一条的undo。/使用堆栈的理由,就是要先把最后命令undo,然后再返回去。public void undoCommands() /思想:1. 给出一个抽象类或接口,把command需要 方法准备好。2. 给出几个不同的具体实现,各种不同的command。3. 命令者当中,给被命令者添加command,并可以要求被命令者执行。4. 被命令者有个arraylist,用来存放需要执行的方法。被命令者提供addCommand方法,和executeCommands,undoCommands方法供命令者使用。5. 个人感觉有点像,observer模式。被监听者同样提供一个arraylist,来添加监听类。2. State模式State模式就是说,一个类的动作可以根据他不同的状态来执行不一样的代码。其实说白了就是把if语句用设计模式来实现了。首先是抽象类:package com.bjsxt.dp.state;/定义抽象类,来规定方法的名称public abstract class MMState public abstract void smile();public abstract void cry();public abstract void say();两个不同的状态: happy和unhappypackage com.bjsxt.dp.state;public class MMHappyState extends MMStateOverridepublic void cry() /happyOverridepublic void say() /hou mummyOverridepublic void smile() /:)package com.bjsxt.dp.state;public class MMUnHappyState extends MMStateOverridepublic void cry() /unhappyOverridepublic void say() /hou papaOverridepublic void smile() /:(关键在于使用者的时候调用:package com.bjsxt.dp.state;public class MM private String name;/mm的state作为一个成员变量,可以有不同的状态MMHappyState,MMUnHappyStateprivate MMState state1 = new MMHappyState();private MMState state2 = new MMUnHappyState();public String getName() return name;public void setName(String name) = name;/调用了MMHappyState的smilepublic void smile() state1.smile();/调用了MMHappyState的crypublic void cry() state1.cry(); /调用了MMHappyState的saypublic void say() state1.say();思想:1. 首先一个抽象类state来定义方法的名字。2. 可以有不同的,多个state的子类来表示不同的状态。3. 具体是使用什么状态,是由使用者来指定。如果使用者选择的是happy,所有的方法都是happy的状态。如果使用者选择的是unhappy,所有的方法都是unhappy的状态。4. 其实质就是一个if语句(面向过程的编程):if (MM.state=happy) 。If(MM.state=unhappy) 。5. 其实质就是一个多态的引用。给出一个抽象类state的引用,去指向不同的状态:private MMState state1 = new MMHappyState();private MMState state2 = new MMUnHappyState();3. Mediator 调停者(中介者)模式通过一个mediator来调停不同的类之间的关系,所有的类都不需要互相交互,他们都和mediator打交道。所有的类都不直接和其他
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省秦皇岛市青龙满族自治县第一中学2025-2026学年高二上学期9月月考数学试题(原卷版)
- 黑龙江省哈尔滨第三中学2025-2026学年高二上学期9月月考化学试题
- 2026届湖南长沙市广益实验中学英语九年级第一学期期末教学质量检测试题含解析
- 2026届重庆市重点中学英语九上期末复习检测试题含解析
- 2026届贵州省黔东南州剑河县九年级化学第一学期期末联考模拟试题含解析
- 2026届孝感市重点中学化学九上期末质量跟踪监视试题含解析
- 2026届辽宁省营口中学化学九年级第一学期期末学业质量监测模拟试题含解析
- 2026届山西省运城市夏县英语九上期末统考模拟试题含解析
- 2026届广东省湛江市霞山职业高级中学九上化学期中学业水平测试模拟试题含解析
- 2026届哈尔滨香坊区四校联考九年级化学第一学期期中教学质量检测试题含解析
- 24h药房温湿度记录表
- 药食同源培训教材课件
- 《战略的本质》读书分享
- 集成运算放大器的非线性应用课件
- 材料化学纳米材料市公开课一等奖省名师优质课赛课一等奖课件
- 从初高中物理教学衔接角度谈初中物理教学课件
- 安全学原理第2版-ppt课件(完整版)
- DB32-T 3751-2020公共建筑能源审计标准-(高清现行)
- 建设工程施工合同最新版(示范文本)(GF—2021—0201)
- 苹果电脑的发展史ppt课件
- 北京中考英语词汇表1600词汇+词组
评论
0/150
提交评论