您的位置:首页 > 编程语言

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

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

类型:形为型模式

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

一、什么是命令模式?

命令模式(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 !!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息