`
TRAMP_ZZY
  • 浏览: 137857 次
社区版块
存档分类
最新评论

设计模式-命令模式

 
阅读更多
public interface Command {
	
	public void execute();

}

public class NoCommand implements Command {

	@Override
	public void execute() {

	}

}

public class Light {

	public void on() {
		System.out.println("Light was on.");
	}
	
	public void off() {
		System.out.println("Light was offf.");
	}

}

public class LightOffCommand implements Command {

	private Light light;
	
	public LightOffCommand(Light light) {
		this.light = light;
	}
	
	@Override
	public void execute() {
		this.light.off();
	}

}
public class LightOnCommand implements Command {

	private Light light;
	
	public LightOnCommand(Light light) {
		this.light = light;
	}
	
	@Override
	public void execute() {
		this.light.on();
	}

}

public class Stereo {

	public void on() {
		
	}
	
	public void off() {
		
	}
	
	public void setCd() {
		
	}
	
	public void setRadio() {
		
	}
	
	public void setVolume() {
		
	}
	
}

public class StereoOffWithCommand implements Command {

	public Stereo stereo;
	
	public StereoOffWithCommand(Stereo stereo) {
		this.stereo = stereo;
	}
	
	@Override
	public void execute() {
		this.stereo.off();
	}

}
public class StereoOnWithCDCommand implements Command {

	private Stereo stereo;
	
	public StereoOnWithCDCommand(Stereo stereo) {
		this.stereo = stereo;
	}
	
	@Override
	public void execute() {
		this.stereo.on();
		this.stereo.setCd();
		this.stereo.setVolume();
	}

}

public class RemoteControl {

	Command[] onCommands;
	Command[] offCommands;
	
	public RemoteControl() {
		this.onCommands = new Command[7];
		this.offCommands = new Command[7];
		
		Command command = new NoCommand();
		for (int i=0; i<7; i++) {
			this.onCommands[i] = command;
			this.offCommands[i] = command;
		}
		
	}
	
	public void setCommand(int slot, Command onCommand, Command offCommand) {
		this.onCommands[slot] = onCommand;
		this.offCommands[slot] = offCommand;
	}
	
	public void onButtonWasPushed(int slot) {
		this.onCommands[slot].execute();
	}
	
	public void offButtonWasPushed(int slot) {
		this.offCommands[slot].execute();
	}
	
	public String toString() {
		StringBuffer stringBuffer = new StringBuffer();
		stringBuffer.append("\n---------------Remote Control----------\n");
		
		return stringBuffer.toString();
	}
	
}

public class RemoteLoader {

	public static void main(String[] args) {

		RemoteControl control = new RemoteControl();
		
		Light light = new Light();
		LightOnCommand command = new LightOnCommand(light);
		LightOffCommand offCommand = new LightOffCommand(light);
		
		Stereo stereo = new Stereo();
		StereoOnWithCDCommand cdCommand = new StereoOnWithCDCommand(stereo);
		StereoOffWithCommand stereoOffWithCommand = new StereoOffWithCommand(stereo);
		control.setCommand(0, command, offCommand);
		control.setCommand(1, cdCommand, stereoOffWithCommand);
		
		control.onButtonWasPushed(0);
		control.offButtonWasPushed(0);
	}
分享到:
评论

相关推荐

    设计模式-命令模式(讲解及其实现代码)

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式常用于解耦发出命令的对象和执行命令的...

    java常用设计模式-命令模式

    Java 命令模式设计模式详解 命令模式(Command Pattern)是一种行为设计模式,它允许将请求封装为一个对象,从而使不同的请求可以使用不同的参数进行参数化,队列或日志请求,以及支持可撤销的操作。在 Java 中,...

    JAVA-设计模式-行为型模式-命令模式

    JAVA-设计模式-行为型模式-命令模式

    java设计模式-命令模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...

    设计模式-命令模式(C#)代码

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在C#编程中,命令模式的应用广泛且实用。 命令模式的核心结构...

    【设计模式-命令模式实战之WCS详细设计与实现(三)】堆垛机控制示例

    在本文中,我们将深入探讨设计模式中的命令模式,并结合实际案例——WCS(Warehouse Control System,仓库控制系统)的堆垛机控制,来详细介绍其详细设计与实现。命令模式是一种行为设计模式,它将请求封装为一个...

    [删除] 设计模式 - 命令模式(C++实例)

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在C++中,命令模式通常用来解耦调用者和实现者,使得系统更加...

    c++设计模式-行为型模式-命令模式

    c++设计模式-行为型模式-命令模式;qt工程 ;c++简单源码; 命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将...

    设计模式----命令模式

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式常用于解耦发出命令的对象和执行命令的...

    设计模式--命令模式java例子

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java编程中,命令模式的应用广泛且实用。 命令模式的核心是将...

    设计模式6---命令模式,精美PPT

    该PPT用于公司内部分享设计模式6---命令模式之用,言简意赅,形象生动.故此分享,希望大家一起学习

    设计模式--命令模式 (模仿遥控器)

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在本例中,我们将通过模仿遥控器来理解命令模式的应用。 遥控器...

    设计模式-Java语言中的应用

    设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...

    C++设计模式-基于QT4开源跨平台开发框架 源码

    6. **命令模式** - 可以利用QT4的QMetaObject系统和QSignalMapper来实现命令模式,通过信号触发不同的操作。 7. **适配器模式** - QT4的QAbstractItemModel和其子类允许将不同数据源适配到统一的模型接口,使得各种...

    java设计模式---诙谐易懂版

    根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    - 命令模式(Command):将请求封装为一个对象,以便使用不同的请求、队列请求、或者支持可撤销的操作。 - 解释器模式(Interpreter):给定一种语言,定义它的文法表示,并提供一个解释器来处理这种语言中的句子...

    Java设计模式----通俗易懂版

    这个资源"Java设计模式----通俗易懂版"显然是一个专门针对初学者或需要深入理解设计模式的开发者编写的指南。作者以形象生动的例子解释了23种经典的Java设计模式,使得复杂的概念变得更加易于理解。 首先,我们要...

    软件设计模式--填空题+简答题(复习7).rar

    2. **设计模式分类**:设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代...

Global site tag (gtag.js) - Google Analytics