命令模式(Command) Java



命令模式(Command):

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



类图:



代码:

Receiver执行类

package ding.study.designpatterns.command;

/**
 * 具体执行类
 * 
 * @author daniel
 * 
 */
public class Receiver {
	public void action() {
		System.out.println("执行请求");
	}

}

Command

package ding.study.designpatterns.command;

/**
 * 命令类抽象
 * 
 * @author daniel
 * 
 */
abstract class Command {
	// 执行类属性
	protected Receiver receiver;

	public Command(Receiver receiver) {
		this.receiver = receiver;
	}

	// 调用执行类的执行方法
	abstract public void execute();
}


CommandImpl


package ding.study.designpatterns.command;
/**
 * 具体命令实现类
 * @author daniel
 * @email 576699909@qq.com
 * @time 2016-6-8 上午11:11:32
 */
public class CommandImpl extends Command {
	/**
	 * 调用父类构造方法
	 * 
	 * @param receiver
	 */
	public CommandImpl(Receiver receiver) {
		super(receiver);
	}

	/**
	 * 执行具体方法
	 */
	@Override
	public void execute() {
		receiver.action();

	}

}


Invoker

package ding.study.designpatterns.command;
/**
 * 命令发起者
 * @author daniel
 * @email 576699909@qq.com
 * @time 2016-6-8 上午11:12:33
 */
public class Invoker {
	private Command command;

	/**
	 * @param command
	 *            the command to set
	 */
	public void setCommand(Command command) {
		this.command = command;
	}

	/**
	 * 调用命令类执行方法
	 */
	public void executeCommand() {
		command.execute();
	}

}


Zmain

package ding.study.designpatterns.command;
/**
 * 命令模式(Command):
将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。
 * @author daniel
 * @email 576699909@qq.com
 * @time 2016-6-8 上午11:13:46
 */
public class Zmain {

	/**
	 * 
	 *   //执行具体命令  调用类>命令类>命令实现类>执行类
	 * @author daniel
	 * @time 2016-6-8 上午11:12:52
	 * @param args
	 */
	public static void main(String[] args) {
		// 执行类
		Receiver r = new Receiver();
		// 命令实现类 装载具体执行类
		Command c = new CommandImpl(r);
		// 调用命令类
		Invoker i = new Invoker();
		// 装载命令类
		i.setCommand(c);
		// 执行具体命令 调用类>命令类>命令实现类>执行类
		i.executeCommand();
	}

}


输出结果:

执行具体命令 调用类>命令类>命令实现类>执行类
执行请求


源码 


https://github.com/dingsai88/StudyTest/tree/master/src/ding/study/designpatterns/command










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dingsai88

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值