行为模式之命令模式

来源:互联网 发布:ipadian 安装软件 编辑:程序博客网 时间:2024/05/16 08:36

命令模式

命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

image

构成

1、客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。

2、命令(Command)角色:声明了一个给所有具体命令类的抽象接口。

3、具体命令(ConcreteCommand)角色:定义一个接收者和行为之间的弱耦合;负责调用接收者的相应操作。

4、请求者(Invoker)角色:负责调用命令对象执行请求,相关的方法叫做行动方法。

5、接收者(Receiver)角色:负责具体实施和执行一个请求。任何一个类都可以成为接收者,实施和执行请求的方法叫做行动方法。

java.lang.Runnable是典型的命令模式

//抽象命令interface Command {    void execute();}class Receiver {    //真正执行命令相应操作    public void action() {        System.out.println("执行操作");    }}//具体命令class ConcreteCommand implements Command {    private Receiver receiver = null;    public ConcreteCommand(Receiver receiver) {        this.receiver = receiver;    }    @Override    public void execute() {        receiver.action();    }}class Invoker {    private Command command = null;    public Invoker(){    }    public Invoker(Command command) {        this.command = command;    }    public void action() {        command.execute();    }    public void setCommand(Command command) {        this.command = command;    }}public class Test {    public static void main(String[] args) {        Receiver receiver = new Receiver();        Command command = new ConcreteCommand(receiver);        Invoker invoker = new Invoker(command);        invoker.action();    /*  Java 8          Invoker invoker = new Invoker();        Receiver receiver = new Receiver();        invoker.setCommand(() -> receiver.action());        invoker.action();    */    }}
0 0
原创粉丝点击