您的位置:首页 > 其它

行为类模式(二):命令(Command)

2016-10-27 14:42 204 查看

定义

将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

UML

public class Main
{
public static void main(String[] args)
{
//组装主机
IMainBoard mainBoard = new GigaMainBoard();
ICommand openCommand = new OpenCommand(mainBoard);
Box box = new Box();
box.setOpenCommand(openCommand);
//执行开机命令
box.openButtonPressed();
}

/**
* 主板接口
*/
public interface IMainBoard
{
/**
* 开机
*/
void open();
}

/**
* 技嘉主板
*/
public static class GigaMainBoard implements IMainBoard
{
@Override
public void open()
{
System.out.println("技嘉主板当前正在开机");
System.out.println("接通电源");
System.out.println("设备检查");
System.out.println("装载系统");
System.out.println("机器开始运行起来");
System.out.println("已开机");
}
}

/**
* 命令接口
*/
public interface ICommand
{
/**
* 执行命令的操作
*/
void execute();
}

/**
* 主板开机命令
*/
public static class OpenCommand implements ICommand
{
private IMainBoard mainBoard;

public OpenCommand(IMainBoard mainBoard)
{
this.mainBoard = mainBoard;
}

@Override
public void execute()
{
mainBoard.open();
}
}

/**
* 机箱类
*/
public static class Box
{
private ICommand openCommand;

public void setOpenCommand(ICommand openCommand)
{
this.openCommand = openCommand;
}

/**
* 按下开机按钮
*/
public void openButtonPressed()
{
openCommand.execute();
}
}
}


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