宫女类(接受者):java
package designpattern.command; /* * 宫女 */ public class Maid { String name; public Maid(String name) { this.name = name; } public void clean() { System.out.println(this.name + ":打扫卫生"); } }
太监类(接受者):ide
package designpattern.command; /* * 太监 */ public class Eunuch { String name; public Eunuch(String name) { this.name = name; } public void carrySedanChair() { System.out.println(this.name + ":抬轿子"); } }
抽象命令接口:ui
package designpattern.command; public interface Command { public void execute(); }
打扫命令类(具体命令类):this
package designpattern.command; public class CleanCommand implements Command { private Maid maid; public CleanCommand(Maid maid) { this.maid = maid; } @Override public void execute() { maid.clean(); } }
抬轿子命令类(具体命令类):spa
package designpattern.command; public class CarrySedanChairCommand implements Command { private Eunuch eunuch; public CarrySedanChairCommand(Eunuch eunuch) { this.eunuch = eunuch; } @Override public void execute() { eunuch.carrySedanChair(); } }
太监总管类(Invoker):设计
package designpattern.command; import java.util.ArrayList; import java.util.List; public class ManagerEunuch { private List<Command> commands = new ArrayList<Command>(); public void setCommand(Command command) { this.commands.add(command); } public void notifyIt() { for (Command command : commands) { command.execute(); } } }
客户端:日志
package designpattern.command; public class Client { public static void main(String[] args) { Maid xiaocui = new Maid("小翠"); Maid xiaohua = new Maid("小花"); Eunuch xiaozhuozi = new Eunuch("小卓子"); Eunuch xiaoguizi = new Eunuch("小贵子"); Command cleanCommand1 = new CleanCommand(xiaocui); Command cleanCommand2 = new CleanCommand(xiaohua); Command carrySedanChairCommand1 = new CarrySedanChairCommand(xiaozhuozi); Command carrySedanChairCommand2 = new CarrySedanChairCommand(xiaoguizi); ManagerEunuch ligongong = new ManagerEunuch(); ligongong.setCommand(cleanCommand1); ligongong.setCommand(cleanCommand2); ligongong.setCommand(carrySedanChairCommand1); ligongong.setCommand(carrySedanChairCommand2); ligongong.notifyIt(); } }
结果输出:code
小翠:打扫卫生
小花:打扫卫生
小卓子:抬轿子
小贵子:抬轿子