您的位置:首页 > 编程语言

命令模式代码示例

2015-06-01 14:46 344 查看
package com.example.mingling;

/**
* //执行命令的接口
* @author Administrator
*
*/
public interface Command
{

void execute();
}
package com.example.mingling;

/**
* 频道切换命令
* @author Administrator
*
*/
public class CommandChange implements Command
{

private Tv myTv;
private int channel;

public CommandChange(
Tv tv ,
int channel )
{
myTv = tv;
this.channel = channel;
}

@Override
public void execute()
{
// TODO Auto-generated method stub
myTv.changeChannel( channel );
}
}


package com.example.mingling;

/**
* 关机命令
* @author Administrator
*
*/
public class CommandOff implements Command
{

private Tv myTv;

public CommandOff(
Tv tv )
{
myTv = tv;
}

@Override
public void execute()
{
// TODO Auto-generated method stub
myTv.turnoff();
}
}


package com.example.mingling;

public class CommandOn implements Command
{

private Tv myTv;

public CommandOn(
Tv tv )
{
myTv = tv;
}

@Override
public void execute()
{
// TODO Auto-generated method stub
myTv.turnOn();
}
}


package com.example.mingling;

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();
}
}


package com.example.mingling;

/**
* 命令接收者
* @author Administrator
*
*/
public class Tv
{

public int currentChannel = 0;

public void turnOn()
{
System.out.println( "The televisino is on." );
}

public void turnoff()
{
System.out.println( "The televisino is off" );
}

public void changeChannel(
int channel )
{
this.currentChannel = channel;
System.out.println( "Now TV channel is " + channel );
}
}


package com.example.mingling;

public class Client
{

public static void main(
String[] args )
{
// 命令接收者
Tv myTv = new Tv();
// 开机命令
CommandOn on = new CommandOn( myTv );
// 关机命令
CommandOff off = new CommandOff( myTv );
// 频道切换命令
CommandChange channel = new CommandChange( myTv , 2 );
// 命令控制对象
Control control = new Control( on , off , channel );
// 开机
control.turnOn();
// 切换频道
control.changeChannel();
// 关机
control.turnoff();
}
}


输出结果:

package com.example.mingling;

The televisino is on.

Now TV channel is 2

The televisino is off
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: