登陆注册
8183300000186

第186章 7 命令模式的适用环境

小A:“命令模式的适用哪些环境?”

大B:“1、需要抽象出待执行的动作,然后以参数的形式提供出来――类似于过程设计中的回调机制。而命令模式正是回调机制的一个面向对象的替代品。2、在不同的时刻指定、排列和执行请求。一个命令对象可以有与初始请求无关的生存期。3、需要支持取消操作。4、支持修改日志功能。这样当系统崩溃时,这些修改可以被重做一遍。5、需要支持事务操作。”

在此写了7个java类来描述说明Command设计模式的实现方式;

1、Control。java命令控制者对象类

2、Tv。java命令接收者对象类

3、Command。java命令接口类

4、CommandChannel。java 频道切换命令类

5、CommandOff。java关机命令类

6、CommandOn。java开机命令类

7、CommandTest。java带有main方法的测试类(命令发送者)

……1、Control。java

package command;

//命令控制者

public class Control{

private Command onCommand,offCommand,changeChannel;

public Control(Command on,Command off,Command channel){

onCommand=on;

offCommand=off;

changeChannel=channel;

}

public void turnOn(){

onCommand。execute();

}

public void turnOff(){

offCommand。execute();

}

public void changeChannel(){

changeChannel。execute();

}

}

……1 end

……2、Tv。java

package command;

//命令接收者

public class Tv{

public int currentChannel=0;

public void turnOn(){

System。out。println(“The televisino is on。”);

}

public void turnOff(){

System。out。println(“The television is off。”);

}

public void changeChannel(int channel){

this。currentChannel=channel;

System。out。println(“Now TV channel is” channel);

}

}

……2 end

……3、Command。java

package command;

//命令接口

public interface Command{

void execute();

}

……3 end

……4、CommandChannel。java

package command;

//频道切换命令

public class CommandChannel implements Command{

private Tv myTv;

private int channel;

public CommandChannel(Tv tv,int channel){

myTv=tv;

this。channel=channel;

}

public void execute(){

myTv。changeChannel(channel);

}

}

……4 end

……5、CommandOff。java

package command;

//关机命令

public class CommandOff implements Command{

private Tv myTv;

public CommandOff(Tv tv){

myTv=tv;

}

public void execute(){

myTv。turnOff();

}

}

……5 end

……6、CommandOn。java

package command;

//开机命令

public class CommandOn implements Command{

private Tv myTv;

public CommandOn(Tv tv){

myTv=tv;

}

public void execute(){

myTv。turnOn();

}

}

……6 end

……7、CommandTest。java

package command;

//命令发送者

public class CommandTest{

public static void main(String[]args){

//命令接收者

Tv myTv=new Tv();

//开机命令

CommandOn on=new CommandOn(myTv);

//关机命令

CommandOff off=new CommandOff(myTv);

//频道切换命令

CommandChannel channel=new CommandChannel(myTv,2);

//命令控制对象

Control control=new Control(on,off,channel);

//开机

control。turnOn();

//切换频道

control。changeChannel();

//关机

control。turnOff();

}

}

……7 end

同类推荐
  • EDA技术

    EDA技术

    根据课堂教学和实验操作的要求,以提高实际工程设计能力为目的,深入浅出地对EDA技术相关知识作了系统和完整的介绍,相关知识作了系统和完整的介绍。
  • 不懂PowerPoint就当不好经理

    不懂PowerPoint就当不好经理

    经理人如何用PowerPoint,来规划部门的发展,如何用PowerPoint来表达自己的经营主张?本书为各类经理人提供了从入门到提高,从原理到实战的一系列知识,相信本书将让演示文稿为经理人的管理效能加分!
  • 互联网创业前奏曲(第二部)——网站运营之人性、策略与实战

    互联网创业前奏曲(第二部)——网站运营之人性、策略与实战

    本书是《互联网创业前奏曲》系列的第二本书,是作者多年互联网实践经验和业界观察的总结,是国内罕有的关于互联网网站运营和用户心理结合的书籍,用通俗的语言阐述互联网运营背后的人性驱动。你想互联网创业吗?你是否在为找不到好的互联网运营策略和方法而发愁?你非常想了解互联网行业?你是否在为自己不了解互联网运营而苦恼?本书针对这些问题列举了很多互联网运营的案例,帮你制定运营策略,更好的修炼和提升运营功力。
  • 信息技术教育大全-操作系统大全

    信息技术教育大全-操作系统大全

    本书系统介绍说明了有关电子信息系统及操作系统等知识,希望对该信息技术有需求的读者能够从中得到帮助。
  • 组态软件控制技术

    组态软件控制技术

    监控组态软件是完成数据采集与过程控制的专用软件,它以计算机为基本工具,为实施数据采集、过程监控、生产控制提供了基础平台和开发环境。本书从应用角度出发,详细介绍了组态软件应用程序的开发过程。对窗口界面编辑、动画链接、实时和历史趋势、安全机制、I/O设备连接,以及生产应用等内容都做了非常详细的介绍。MCGS是优秀的监控组态软件之一,它功能强大、使用方便,可以非常容易地实现监视、控制、管理的各项功能,并可提供软、硬件的全部接口,方便、快速地进行系统集成,构成不同需求的数据采集与监控系统。本书可作为高等学校计算机应用、自动控制、电子技术、机电技术专业的教材,同时还可作为相关专业工程技术人员的自学用书。
热门推荐
  • 易柏

    易柏

    当整个世界开始坍塌,覆巢之下,我希望你是完卵。
  • 花千骨之转世

    花千骨之转世

    花千骨被白子画杀死了,轻水孟轩朗也死了,蜀国皇帝已不是孟轩朗了,竹染也为了救花千骨而死,花千骨重生后没有忘记前世的记忆,但神界记忆也没有恢复,花千骨到底还会记起神界的事吗?她在神界是什么身份?她会原谅白子画吗?想知道请在书里寻找答案,以前写的我没删,我重新写的,请大家多多支持,谢谢
  • 神叹

    神叹

    在这个世界有着数个位面,强大之人不计其数,但不知从什么时候开始,一切都变了,神之国这个无法知其源头的组织出现了。给所有位面带来了灾难
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 六日轮回

    六日轮回

    泉在失去后开始在无数个夜里哭泣流泪时间让他懂得珍惜他在换了身份后再一次找到她追求她保护终于他们要结婚了、他以为是幸福的开始却怎么都没想到这的确只是开始
  • 为妾之道

    为妾之道

    因失身而惨遭退婚的秦家小姐秦语爱,选择上吊自杀,从而让灵魂状态的秦米米有机可乘,她被腹黑死对头冷家少爷冷夜非纳入府中为妾,是一场无情的玩弄,还是命运的羁绊?
  • 迷糊萌妻的暖心总裁

    迷糊萌妻的暖心总裁

    他俯身看着蹲在角落哭泣的她,递上了一张纸。她接过纸,几番糟蹋之后,抽泣着问道:“还有么……?”“你抬头看看我是谁。”他淡淡的语气,她抬头泪眼朦胧地看了一会儿,迅速低下头:“呜呜呜不认识!”“再看!”“大叔,你好眼熟……”某男的嘴角抽搐了……
  • 恋爱眼泪

    恋爱眼泪

    恋爱的眼泪是什么滋味?郑小美是知道的。曾经想当一名作家的她却遇到楼下程华的几次打击,于是郑小美开始讨厌程华了。岂不知程华却偷偷的暗恋着郑小美。可是程华的情敌来了。他—韦碧帅气、潇洒有男人味几乎是完美的化身。哦,郑小美怎能不动心。程华呆了傻了,不得不把自己心爱的人双手让给别人。程华不甘心,为了这份爱情程华与韦碧经历了种种风波,打过了三次架。终于,程华的举动还是感动了郑小美。郑小美爱上了程华。可是程华却不能再爱她了。哦,离开了郑小美程华心里真的好痛好痛。在郑小美与程华即将告别时,程华才说出了心中隐藏已久的秘密,一件让郑小美做梦都没想到的秘密。
  • 学长,请别忘了我

    学长,请别忘了我

    小时候的青梅竹马,因为他的离开而永远的断了线。到了高中,他俩再次相遇,他是她的学长,是全校女生心中的理想男友。她还爱着他,但他却忘了她。一次次的意外,一次次的分别,终会怎样?学长,请别忘了我。
  • 我有一间婚介所

    我有一间婚介所

    “在下欧阳克,还请仙师赐一良配!”“你深井冰阿!”陈胜屿接手舅舅店铺的第一天,店里就来了一个莫名其妙的古装男子,居然自称是欧阳克!“待仙师在附近的人里面为你搜上一搜!看看有没有你中意的女子!”“仙师,这位网名为空谷幽兰的女子,想必一定是一位不食人间烟火的女子!”“额,原来欧阳兄口味如此独特阿!”……这是一个不太正经的故事。