大话设计模式

《大话设计模式》

第186章

上一页 封面 下一页

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

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

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

1、命令控制者对象类

2、www.youxs.org

3、命令接口类

4、频道切换命令类

5、关机命令类

6、开机命令类

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

……1、

packagemand;

//命令控制者

publicclassControl{

privateCommandonCommand,offCommand,changeChannel;

publicControl(Commandon,Commandoff,Commandchannel){

onCommand=on;

offCommand=off;

changeChannel=channel;

publicvoidturnOn{

publicvoidturnOff{

publicvoidchangeChannel{

……1end

……2、www.youxs.org

packagemand;

//命令接收者

publicclassTv{

publicintcurrentChannel=0;

publicvoidturnOn{

(“Thetelevisinoison.”);

publicvoidturnOff{

(“Thetelevisionisoff.”);www.smrhm.com 幻想小说网

publicvoidchangeChannel(intchannel){

=channel;

(“NowTVchannelis”+channel);

……2end

……3、

packagemand;

//命令接口

publicinterfaceCommand{

voidexecute;

……3end

……4、

packagemand;

//频道切换命令

publicclassCommandChannelimplementsCommand{

privateTvmyTv;

privateintchannel;

publicCommandChannel(Tvtv,intchannel){

myTv=tv;

=channel;

publicvoidexecute{

(channel);

……4end

……5、

packagemand;

//关机命令

publicclassCommandOffimplementsCommand{

privateTvmyTv;

publicCommandOff(Tvtv){

myTv=tv;

publicvoidexecute{

……5end

……6、

packagemand;

//开机命令

publicclassCommandOnimplementsCommand{

privateTvmyTv;

publicCommandOn(Tvtv){

myTv=tv;

publicvoidexecute{

……6end

……7、

packagemand;

//命令发送者

publicclassCommandTest{

publicstaticvoidmain(Stringargs){

//命令接收者

TvmyTv=newTv;

//开机命令

CommandOnon=newCommandOn(myTv);

//关机命令

CommandOffoff=newCommandOff(myTv);

//频道切换命令

CommandChannelchannel=newCommandChannel(myTv,2);

//命令控制对象

Controlcontrol=newControl(on,off,channel);

//开机

//切换频道

//关机

……7end

阅读大话设计模式最新章节 请关注米妮小说网(www.qixinyuan.com.cn)

上一页 目录 下一页 存书签

热门推荐