`

第九章 Command模式

 
阅读更多

Command命令模式是将发出命令的责任和接受命令的责任以及命令三者之间分开,通过分离后委派给不同的对象方便扩展。主要涉及到的对象有:请求者,命令,接收者。

如:长官命令士兵跑步、唱歌。

长官是命令发出者(Offiecer)

士兵是命令接收者(Soldier)

跑步,唱歌是具体命令(Command)

package com.wayne.command;

public abstract class Command {
	public abstract void execute();
}

package com.wayne.command;

public class SingCommand extends Command {
	private Soldier soldier;

	public SingCommand(Soldier soldier) {
		this.soldier = soldier;
	}

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

}

package com.wayne.command;

public class RunCommand extends Command {
	private Soldier soldier ;
	public RunCommand(Soldier soldier){
		this.soldier = soldier;
	}
	@Override
	public void execute() {
		soldier.action();
	}

}


package com.wayne.command;

public class Officer {
	private Command command;

	public Officer(Command command) {
		this.command = command;
	}

	public void order() {
		command.execute();
	}
}


package com.wayne.command;

public class Soldier {
	public Soldier() {
	}

	public void action() {
		System.out.println("execute command.....");
	}
}


package com.wayne.command;

public class Client {
	public static void main(String args[]) {
		Soldier soldier = new Soldier();
		Command command = new RunCommand(soldier);
		Command command2 = new SingCommand(soldier);
		// 不同的长官给同一个士兵发送不同的命令
		Officer officer = new Officer(command);
		Officer officer2 = new Officer(command2);
		officer.order();
		officer2.order();
	}
}

 

分享到:
评论

相关推荐

    敏捷软件开发:原则、模式与实践

    第9章 开放—封闭原则(OCP) 第10章 Liskov替换原则(LSP) 第11章 依赖倒置原则(DIP) 第12章 接口隔离原则(ISP) 第三部分 薪水支付案例研究 第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 TEMPLATE METHOD模式和...

    研磨设计模式(完整带书签).part2.pdf

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) ...

    敏捷软件开发原则、模式与实践 C#版

    第一部分 敏捷开发 第1章 敏捷实践 第2章 极限编程概述 第3章 计划 第4章 测试 第5章 重构 第6章 一次编程实践 第二部分 敏捷设计 第7章 什么是敏捷设计 第8章 SRP:单一职责原则 第9章 OCP:开放-封闭原则 第10章 ...

    研磨设计模式(完整带书签).part1.pdf

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) ...

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    第9章 观察者(observer)模式 72 第10章 调停者(mediator)模式 85 第11章 代理(proxy)模式 97 第12章 职责链(chain of responsibility)模式 115 第13章 享元(flyweight)模式 122 第14章 构造型模式介绍 130 第15章 ...

    敏捷软件开发:原则、模式与实践.pdf

    第十三章 COMMAND模式和ACTIVE OBJECT模式 第十四章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第十五章 FACADE模式和MEDIATOR模式 第十六章 SINGLETON模式和MONOSTATE模式 第十七章 NULL OBJECT模式 第十八章...

    研磨设计模式-part2

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) ...

    研磨设计模式-part4

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) ...

    研磨设计模式-part3

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) ...

    Delphi模式编程第一分卷

    第9章 适配器模式(Adapter) 9.1 模式解说 9.2 结构和用法 9.2.1 类的适配器模式 9.2.2 对象的适配器模式 9.2.3 问题讨论 9.3 范例与实践 9.3.1 用适配器模式包装第三方API的范例 9.3.2 范例小结 第10章 ...

    Delphi模式编程第二分卷

    第9章 适配器模式(Adapter) 9.1 模式解说 9.2 结构和用法 9.2.1 类的适配器模式 9.2.2 对象的适配器模式 9.2.3 问题讨论 9.3 范例与实践 9.3.1 用适配器模式包装第三方API的范例 9.3.2 范例小结 ...

    研磨设计模式.part3(共4个)

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式...

    研磨设计模式.part2(共4个)

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式...

    研磨设计模式.part4(共4个)

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式...

    研磨设计模式.part1(共4个)

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式...

    第10章设计模式-真题1

    1. **Command模式**:在2009年的题目中,提到架构师决定采用Command模式来实现公告板系统的界面显示部分。Command模式主要用于封装请求,将请求作为一个对象,使得参数化对象调用不同的方法成为可能,同时也支持撤销...

    第10章设计模式-解析1

    9. **抽象工厂模式(Abstract Factory)**:抽象工厂模式提供一个创建对象族的接口,但不指定具体的产品类。2011年的题目提到了限制用户在聊天系统中的不当言论,可以使用责任链模式来实现关键词过滤的灵活性,但...

    java设计模式(电子书)

    第9章模板方法模式(TEMPLATE METHOD PATTERN):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 第10章建造者模式(BUILDER PATTERN)...

Global site tag (gtag.js) - Google Analytics