命令模式(Command) 将一个请求封装为一个对象,从而使你可用不一样的请求对客户进行参数 化;对请求排队和日志,以及支持可撤销的操做。java
类型:形为型模式 git
顺口溜:中访策备迭 观模命状职解github
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).下降对象之间的耦合度。ide
2).新的命令能够很容易地加入到系统中。this
3).能够比较容易地设计一个组合命令。spa
4).调用同一方法实现不一样的功能设计
使用命令模式可能会致使某些系统有过多的具体命令类。由于针对每个命令都须要设计一个具体命令类,所以某些系统可能须要大量具体命令类,这将影响命令模式的使用。日志
本系列文章源码地址,https://github.com/amosli/dp 欢迎Fork & Star !!code