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

本文详细介绍了命令模式的概念及其在软件设计中的应用。通过示例代码展示了命令模式中的五个关键角色:客户类、抽象命令类、具体命令类、请求者类及接收者类。并解释了这些角色如何协同工作来实现命令的封装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

命令模式:

命令模式是对命令的封装。它将发出的命令的责任和执行的命令分隔开,委派给不同的对象。被委派的对象虽然具有执行的命令,但只有在接收到命令后,才会执行命令。

下面是命令模式的结构图:

命令模式涉及五个角色:

  • 客户类(Client):创建一个具体的命令对象,确认其接收者。
  • 抽象命令类(Command):声明一个给所有具体命令类的抽象接口。这是一个抽象角色,可以是接口或抽象类。
  • 具体命令类(ConcreteCommand):定义一个接受者和行为之间的弱耦合;实现execute()方法,负责调用接收者的相应操作。
  • 请求者类(Invoke):负责对调用命令对象执行请求,相关的方法叫做行动方法
  • 接收者类(Receiver):负责具体实施和执行请求。任何一个类都可以成为接收者,实施和执行请求的方法叫做行动方法。

PS:值得注意的是:接收者类,具有接收到命令会执行的动作,但它只有在接收到命令时才会执行

源代码分析:

接收者类(Receiver)

Receiver.java:

public class Receiver {
    public Receiver(){
        System.out.println("命令接收者:");
    }
    
    public void action(){
        System.out.println("接收到命令后,执行的动作");
    }
}

 

抽象命令类(Command)

Command.java:

public interface Command {
    
    public void excute();
    
}

 

 

 

 

具体命令类(ConcreteCommand)

ConcreteCommand.java:

public class ConcreteCommand implements Command{
    
    Receiver receiver;
    
    public ConcreteCommand(Receiver receiver){
        this.receiver = receiver;
    }
    //实现调用接收者类执行动作的方法
    @Override
    public void excute() {
        receiver.action();
    }
}

 

发送请求类(Invoker)

Invoker.java

public class Invoker {
    private Command command;
    
    public Invoker(Command command){
        this.command = command;
    }
    //发送命令
    public void action(){
        command.excute();
    }
}

 

客户端:

public class Client {
    public static void main(String[] args){
        Receiver receiver = new Receiver();
        Command command = new ConcreteCommand(receiver);
        Invoker invoker = new Invoker(command);
        invoker.action();
    }
}

 

运行结果:

命令接收者:
接收到命令后,执行的动作

 

转载于:https://www.cnblogs.com/mercuryli/p/5304047.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值