设计模式----命令模式UML和实现代码

一、什么是命令模式?

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

类型:形为型模式 

顺口溜:中访备迭 观模状职解


二、命令模式UML


三、JAVA代码实现

package com.amosli.dp.behavior.command;

public abstract class Command {
	protected Receiver invoker;

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

	public abstract void execute();
}

package com.amosli.dp.behavior.command;

public class ConcreteCommand extends Command {

	public ConcreteCommand(Receiver invoker) {
		super(invoker);
	}

	@Override
	public void execute() {
		invoker.action();
	}

}

package com.amosli.dp.behavior.command;

import java.util.ArrayList;
import java.util.List;

public class Invoker {
	
	private List<Command> commands = new ArrayList<Command>();
	
	public void add(Command command){
		commands.add(command);
	}
	
	public void remove(Command command){
		commands.remove(command);
	}
	
	public void inform(){
		for (Command command : commands) {
			command.execute();
		}
	}
	
}

package com.amosli.dp.behavior.command;

public  class Receiver {
	public void action(){
		System.out.println("执行了这个操作。");
	}
}

四、使用场景

1.系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。

2.系统需要在不同的时间指定请求、将请求排队和执行请求。

3.系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。

4.系统需要将一组操作组合在一起,即支持宏命令。

五、优缺点

1、优点

1).降低对象之间的耦合度。

2).新的命令可以很容易地加入到系统中。

3).可以比较容易地设计一个组合命令。

4).调用同一方法实现不同的功能

2、缺点

使用命令模式可能会导致某些系统有过多的具体命令类。因为针对每一个命令都需要设计一个具体命令类,因此某些系统可能需要大量具体命令类,这将影响命令模式的使用。

六、源码地址

本系列文章源码地址,https://github.com/amosli/dp  欢迎Fork  & Star !!



转载于:https://my.oschina.net/u/2003960/blog/541812

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值