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