行为型模式 07 命令模式

命令模式Command

经一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持课撤销的操作
在这里插入图片描述
Command:定义命令接口,声明执行的方法
ConcreteCommand:实现类,实现方法,持有Receiver引用
Invoker:调用者持有Command,可能多个,调用命令
Receiver:接收者,命令的实际执行者(可是抽象的)

对命令进行封装,使得命令请求本身成为了一个对象

使用场景

降低耦合,调用者与执行者分离,互相不知道是谁,可以组合多个命令,形成一个宏命令,支持撤销和恢复的操作
缺点:可能会生成过多的具体命令类

代码实现

Invoker 实际调用者
持有Command引用,可持有多个

public class Invoker {
    private Command command;
    public Invoker(Command command){
        this.command = command;
    }
    public void ExecuteCommand(){
        command.Execute();
    }
}

ConcreteCommand:

public class ConcreteCommand implements Command {
    private Receiver receiver;
    public ConcreteCommand(Receiver receiver){
        this.receiver = receiver;
    }
    @Override
    public void Execute() {
        receiver.Action();
    }
}

Receiver:实际命令的执行者

public class Receiver {
    public void Action(){
        System.out.println("接收者执行命令");
    }
}

与策略模式

策略模式虽有多个策略,但是都是是针对同一个问题的
命令模式却是针对多个命令的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值