设计模式——命令模式

场景引入

这样一个场景:我们要吃饭,那么在家的情况下就需要我们要自己去做饭,然后才能吃到饭。但是如果我们现在在餐厅的话,我们只需要点菜就可以吃到饭。在家做饭的过程就相当于餐厅厨师做法的过程,属于执行。那么在家做法就相当于自己给自己下命令,然后自己去执行命令的过程。就是你自己告诉你自己:我要吃小龙虾,然后你自己去做小龙虾;我要吃面条,然后你要自己去做面条。但是你在餐厅就不一样,你只要说:我要吃小龙虾,你只要告诉老板,你就能吃到小龙虾;你要吃面条,你告诉老板,你也能吃到。这就相当于把请求和执行的过程进行了分开。命令模式就是这样,你只要告诉接收者你的命令,那么你只需要发出命令,而不用自己去执行命令。因为如果每一个命令都需要自己去实现的话,那么自己的类就变得十分复杂。就像现在每个人都在家吃饭,那么每个人都要实现自己做饭的需求。但是想象以下:如果在餐厅吃饭和在家吃饭的成本一样,那么肯定是餐厅吃饭来的更好,因为你只要发出命令,而不需要自己去执行那个过程就能实现。

代码实现

Customer

public class Customer {
    Command command;

    public Customer(Command command) {
        this.command = command;
    }

    public void setCommand(Command command) {
        this.command = command;
    }

    public void call(){
        System.out.println("我是顾客,我要发出命令,然后我就能得到我需要的东西了:兴奋ing");
        command.exec();
    }
}

Command

public interface Command {
    public void exec();
}

Crayfish

public class Crayfish implements Command{
    @Override
    public void exec() {
        System.out.println("我是做小龙虾的厨师,又有人点,我又得做小龙虾");
    }
}

Noodle

public class Noodle implements Command{
    @Override
    public void exec() {
        System.out.println("我是面条厨师,又有人点,我又得做面条");
    }
}

Test

public class Test {
    public static void main(String[] args) {
        Customer you = new Customer(new Noodle());
        you.call();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值