设计模式:命令模式(Command)

 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行參数化;对请求排队或记录请求日志。以支持可撤销的操作。
这里写图片描写叙述

命令模式的角色
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<
原文地址:https://www.cnblogs.com/zsychanpin/p/7383769.html