将一个请求封装为一个对象,从而使你可用不同的请求对客户进行參数化;对请求排队或记录请求日志。以支持可撤销的操作。
命令模式的角色
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<
posted @ 2017-08-17 18:42 阅读( ...) 评论( ...)