java设计模式--命令模式

本文介绍了软件设计中的命令模式,包括其核心概念、角色定义、UML图及实例代码。通过将命令封装为对象,命令模式实现了调用者与接收者的解耦。

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

简介:

命令模式:说白了领导(调用者)下个命令(命令)让某人干某事(接收者:实际干活的人)

角色 :

     抽象命令:一个抽象类或接口
     具体实现命令:具体实现抽象命令,持有接收者,并调用接收者对象的功能来完成执行命令的操作
     接收者:真正执行命令的对象,任何类都可以只要能完成命令要求的功能
     调用者:通常会持有命令对象,可以持有多个,相当于入口

UML图:

 

具体命令和接收者可以多个,这样就是领导下达了多个任务,分配不同的人来完成。

实例

 

package com.sl.demo.command;
/**
 * 抽象命令
 * @author pengkun
 *
 */
public interface Command {
	/**
	 * 执行命令
	 */
	void execute();
}

package com.sl.demo.command;
/**
 * 具体命令
 * @author pengkun
 *
 */
public class ConcreteCommand implements Command {
	
	//持有接收者
	private Receiver receiver;
	
	//初始化接收者	
	public ConcreteCommand(Receiver receiver) {
		super();
		this.receiver = receiver;
	}
	/**
	 * 执行命令
	 */
	@Override
	public void execute() {
		//让接收者来执行相应功能
		receiver.concreteExecute();
	}

}

接收者

package com.sl.demo.command;
/**
 * 接收者
 * @author pengkun
 *
 */
public class Receiver {
	/**
	 * 真正执行命令
	 */
	public void concreteExecute() {
		System.out.println("Receiver.concreteExecute():"+"我开始执行命令了...");
	}
}

调用者

	@Test
	public void test() {
		Receiver receiver=new Receiver();
		Command command=new ConcreteCommand(receiver);
		Invoker invoker=new Invoker();
		invoker.setCommand(command);
		invoker.invoker();
	}

输出:Receiver.concreteExecute():我开始执行命令了...

总结

 命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值