设计模式——命令模式

命令模式通过将请求封装为对象,实现请求者与接收者的解耦,提高系统的可扩展性和可维护性。在点餐系统中,服务员作为Invoker,记录顾客点餐,厨师作为Receiver执行操作。该模式优点包括类间解耦、易扩展,但可能导致大量具体命令类。适用于需要解耦、命令队列、撤销/恢复操作和宏命令的场景。
摘要由CSDN通过智能技术生成

初识

命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

结构

在这里插入图片描述

角色:

  • Invoker类:要求该命令执行这个请求
  • Command类:用来声明执行操作的抽象类或接口
  • ConcreteCommand类:将一个接受者对象绑定于一个动作,调用接收者相应的操作,以实现Execute
  • Receiver类:知道如何实施与执行一个请求相关的操作,任何类都可能作为一个接受者

应用

背景:烧烤店中,顾客到了店里,由服务员负责记录顾客的点菜情况,再将顾客点的餐告诉厨师,厨师进行制作。这里,顾客与厨师进行解耦,服务员相当于Invoker类,是命令的传达者;将每一桌顾客的请求封装为一个对象,类似于ConcreteCommand类;厨师是命令的接受者,相当于Receiver类。

class Program
{
   
    static void Main(string[] args)
    {
   
        Barbecuer boy = new Barbecuer();

        Command bakeMuttonCommand1 = new BakeMuttonCommand(boy);

        Command bakeMuttonCommand2 = new BakeMuttonCommand(boy);

        Command bakeChickenWingCommand1 = new BakeChickenWingCommand(boy);
        Waiter girl = new Waiter();

        girl.SetOrder(bakeMuttonCommand1);
        gi
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值