命令模式

本文介绍了一种数据驱动的设计模式——命令模式,它是行为型模式的一种。文章详细解释了如何将请求封装为命令对象并传递给调用者,再由调用者找到合适的对象来执行这些命令。通过一个简单的示例,展示了领导发布命令、员工执行命令的过程。

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

简介:是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

关键代码:命令的发布者(调用者)一般持有命令接口的引用;具体的命令类持有命令的执行者(被调用者)对象。

一个非常简单的例子:领导发布命令,员工去执行。领导是命令的发布者,持有命令接口的引用。员工是命令的执行者,被一个具体的命令类持有。

代码如下:

/**
 *定义一个命令的接口
 */
public interface Command {
	
	public void execute();

}

/**
 *命令的发布者,持有命令的引用
 */

class Leader{
	private Command command;

	public Leader(Command command) {
		super();
		this.command = command;
	}
	
	public void releaseComm(){
		command.execute();
	}
}


/**
 *命令的执行者
 */
class Employee{
	
	public void work(){
		
	System.out.println("执行放假的命令");
	
	}
	
}

/**
 *具体的命令类持有命令执行者对象
 */
class JobCommand implements Command{
	private Employee employee;

	public JobCommand(Employee employee) {
		super();
		this.employee = employee;
	}

	@Override
	public void execute() {
		
		employee.work();
		
	}
	
}

主程序:

public class Main {

	public static void main(String[] args) {
		Employee employee=new Employee();
		JobCommand jobCommand=new JobCommand(employee);
		Leader leader=new Leader(jobCommand);
		
        /*leader持有命令,执行此方法时,调用了JobCommand的execute()方法。JobCommand持有命令的执行者,执行
		execute()方法,调用了Employee的work()方法。因此leader.releaseComm()最终通过command调用了
		Employee的work()方法。*/
		
		leader.releaseComm();

	}

}

运行结果:

执行放假的命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值