java设计模式之——命令(Command)模式

设计模式之——命令(Command)模式

命令模式定义

将一组行为抽象为对象,实现二者之间的松耦合。

命令模式的优点

  1. 增加或删除命令方便;
  2. 降低系统的耦合度。

命令模式的缺点

  1. 可能产生大量具体命令类。

命令模式的实现

定义一个抽象命令

/**
 * @ClassName AbstractCommend
 * @Description TODO
 * @Author mamingcong
 * @Date 2020/6/17 16:56
 * @Version 1.0
 */
public abstract class AbstractCommend {

    public abstract void sendCommend();
}

定义一个执行者

/**
 * @ClassName Receiver
 * @Description TODO
 * @Author mamingcong
 * @Date 2020/6/17 16:57
 * @Version 1.0
 */
public class Receiver {
    
    public void doSomething(){
        System.out.println("去给我买个电脑");
    }
}

定义一个具体命令

/**
 * @ClassName RealCommend
 * @Description TODO
 * @Author mamingcong
 * @Date 2020/6/17 16:59
 * @Version 1.0
 */
public class RealCommend extends AbstractCommend {
    private Receiver receiver;

    public RealCommend(Receiver receiver) {
        this.receiver = receiver;
    }

    @Override
    public void sendCommend() {
        receiver.doSomething();
    }
}

定义一个调用者

/**
 * @ClassName Invoker
 * @Description TODO
 * @Author mamingcong
 * @Date 2020/6/17 17:00
 * @Version 1.0
 */
public class Invoker {

    private AbstractCommend abstractCommend;

    public Invoker(AbstractCommend abstractCommend) {
        this.abstractCommend = abstractCommend;
    }

    public void sendCommend() {
        abstractCommend.sendCommend();
    }

}

测试

/**
 * @ClassName Test
 * @Description TODO
 * @Author mamingcong
 * @Date 2020/6/17 17:02
 * @Version 1.0
 */
public class Test {

    public static void main(String[] args) {
        Receiver receiver = new Receiver();
        AbstractCommend abstractCommend = new RealCommend(receiver);
        Invoker invoker = new Invoker(abstractCommend);
        invoker.sendCommend();
    }
}

运行结果

去给我买个电脑

命令模式的使用场景

  1. 系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。
  2. 系统需要在不同的时间指定请求、将请求排队和执行请求。
  3. 系统需要将一组操作组合在一起,即支持宏命令。
  4. 系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。(备忘录模式)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值