将一个请求封装为一个对象,从而使你可用不同的请求对客户进行參数化;对请求排队或记录请求日志。以支持可撤销的操作。
命令模式的角色
1. client角色(Client):创建一个详细命令(ConcreteCommand)对象并确定其接收者。
2. 命令角色(Command):声明一个给全部命令类的抽象接口。
3. 详细命令角色(ConcreteCommand):定义一个接收者和行为之间的弱耦合;实现execute()方法,负责调用接收者的对应操作。execute()方法叫做运行方法。
4. 请求者角色(Invoker):负责调用命令对象运行请求,相关的方法叫做行动方法。
5. 接收者角色(Receiver):负责详细实施和运行一个请求。不论什么一个类都能够称为接收者,实施和运行请求的方法叫做行动方法。
举个简单样例(录音机有播音Play,倒带Rewind和停止Stop功能)
1 接收者角色
public class AudioPlayer
{
public void play()
{
System.out.println("Play");
}
public void rewind()
{
System.out.println("Rewind");
}
public void stop()
{
System.out.println("Stop");
}
}
2 抽象命令角色
public interface Command
{
public void execute();
}
3 详细命令角色
public class PlayCommand implements Command
{
private AudioPlayer myAudio;
public PlayCommand(AudioPlayer audioPlayer)
{
this.myAudio = audioPlayer;
}
@Override
public void execute()
{
myAudio.play();
}
}
public class RewindCommand implements Command
{
private AudioPlayer myAudio;
public RewindCommand(AudioPlayer audioPlayer)
{
this.myAudio = audioPlayer;
}
@Override
public void execute()
{
this.myAudio.rewind();
}
}
public class StopCommand implements Command
{
private AudioPlayer myAudio;
public StopCommand(AudioPlayer audioPlayer)
{
this.myAudio = audioPlayer;
}
@Override
public void execute()
{
this.myAudio.stop();
}
}
4 请求这角色(由按键扮演)
public class Keypad
{
private Command playCommand;
private Command rewindCommand;
private<
记一次电脑被清空的感受
JAVA学习<二>
JAVA学习记录<一>
iOS服务器数据请求"汉字编码"问题
iOS上传图片问题
iOS类型的转换
iOS限制输入解决方法
iOS10权限问题
JS进阶学习<一>