`

设计模式:命令模式

阅读更多

命令设计模式需要一个操作和附带的参数,并将它们封装在一个对象中来执行,记录等等。在下面的例子中,命令是一个操作,它的参数是一个Computer,而且它们封装在Switch。

从另一个角度看,命令模式有4个部分:命令,接收者,调用者和客户端。在这个例子中,Switch是调用者,Computer是接收者。一个具体的命令有哥接收器对象并调用接收器中的方法。调用者可以使用不同的具体的命令。客户端为接收器管理使用哪一条命令。

1、命令模式类图



 2、Java命令模式的例子

package com.leon.command;

import java.util.ArrayList;
import java.util.List;

//命令接口
interface Command {
	void execute();
}

// 在这个例子中,假设你用一个开关来控制电脑

// 一个调用者
class Switch {
	private List<Command> history = new ArrayList<Command>();

	public Switch() {

	}

	public void storeAndExecute(Command command) {
		this.history.add(command);
		command.execute();
	}
}

// 接收者
class Computer {
	public void shutDown() {
		System.out.println("电脑关机");
	}

	public void restart() {
		System.out.println("电脑重启");
	}
}

//关闭掉闹的命令
class ShutDownCommand implements Command {

	private Computer computer;

	public ShutDownCommand(Computer computer) {
		this.computer = computer;
	}

	@Override
	public void execute() {
		// TODO Auto-generated method stub
		computer.shutDown();
	}

}

//重启电脑的命令
class ReStartCommand implements Command {

	private Computer computer;

	public ReStartCommand(Computer computer) {
		this.computer = computer;
	}

	@Override
	public void execute() {
		// TODO Auto-generated method stub
		computer.restart();
	}

}

public class Main {
	// 客户端
	public static void main(String[] args) {
		Computer computer = new Computer();
		ShutDownCommand shdcmd = new ShutDownCommand(computer);
		ReStartCommand rstcmd = new ReStartCommand(computer);

		Switch sw = new Switch();

		String cmd = "shutdown";

		if (cmd.equals("shutdown")) {
			sw.storeAndExecute(shdcmd);
		} else if (cmd.equals("restart")) {
			sw.storeAndExecute(rstcmd);
		}
	}
}

 

  • 大小: 21.5 KB
分享到:
评论

相关推荐

    《设计模式:可复用面向对象软件的基础》英文版

    例如责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...

    设计模式:可复用面向对象软件的基础--详细书签版

     “[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...

    设计模式:可复用的面向对象软件的基础

    常见的行为型模式包括策略模式、模板方法模式、观察者模式、迭代器模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式和职责链模式。 在游戏引擎的开发中,设计模式能够以特定方式组织代码...

    设计模式:可复用面向对象软件设计基础(附源码)

    3. **行为型模式**:包括责任链模式、命令模式、解释器模式、迭代器模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。这些模式主要处理对象之间的交互和职责分配。 例如,单例模式...

    C++设计模式代码资源23_Command_命令模式.zip

    **C++设计模式:命令模式** 命令模式是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列或者记录请求日志,同时支持可撤销的操作。在C++编程中,命令模式是一种非常实用的设计模式,能够...

    1.《设计模式:可复用面向对象软件的基础(完整书签)》

    总的来说,《设计模式:可复用面向对象软件的基础》是一本深入理解和应用面向对象设计的必备书籍,它不仅介绍了23种核心设计模式,还提供了大量实例和解释,帮助读者将理论知识转化为实际的编程技巧。通过对这本书的...

    设计模式之命令模式

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

    designPattern6:设计模式:命令模式,命令模式(松耦合版),命令模式(松耦合改进版),

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求,以及支持可撤销的操作。在Java编程中,命令模式广泛应用于各种场景,尤其在需要解耦调用者与...

    C#面向对象设计模式纵横谈(25):设计模式总结

    17. 命令模式:命令模式将请求封装为一个对象,使得可以使用不同的请求、队列请求、或者记录请求日志。 18. 责任链模式:责任链模式为请求创建一个接收者对象的链,请求沿着链传递,直到某个对象处理它。 19. 迭代...

    Vim编辑器有三种模式:命令模式、编辑模式、末行模式 模式间切换方法如下

    - **从命令模式进入编辑模式**:在命令模式下,按下`i`键将进入插入模式,即编辑模式,此时用户可以在当前光标位置输入文本。此外,还可以通过按下`a`键进入附着模式,该模式允许用户在当前光标之后的位置输入文本;...

    【Java 设计模式-源码】命令模式:增强灵活的命令执行

    在 Java 中,命令模式是一种行为设计模式,它将请求封装为对象,允许对客户端进行参数化,包括队列、请求和操作。该模式还支持可撤销的操作,增强了管理和执行命令的灵活性。 二、命令设计模式的别名 Action(动作)...

    设计模式:可服用面向对象软件的基础

    2. 命令模式:将请求封装为一个对象,以便使用不同的请求、队列请求或参数化请求。 3. 解释器模式:定义一个语言的文法,并提供一个解释器。 4. 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层...

    设计模式教材pdf 中文版

    - 命令模式:将命令封装为对象,以便使用不同的请求、队列或者日志来参数化其他对象。 - 解释器模式:提供一个语言的文法表示,并定义一个解释器来解释该文法中的句子。 - 迭代器模式:提供一种方法顺序访问聚合...

    设计模式可复用面向对象软件的基础 源码

    在《设计模式:可复用面向对象软件的基础》一书中,作者Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(通常被称为GoF,Gang of Four)详细阐述了23种经典的设计模式。这些模式分为三类:创建型模式、...

    设计模式——基于C#的工程化实现及扩展

    这部分涉及的模式包括但不限于策略模式、命令模式、迭代器模式等。这些模式的合理应用能够让软件设计更加符合面向对象的原则,使系统具备更好的可扩展性和可维护性。 #### 第五部分:小颗粒度基础模式和应用案例 ...

    设计模式-命令模式

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在iOS开发中,命令模式尤其适用于处理事件驱动的编程场景,因为...

    《设计模式:可复用面向对象软件的基础》

    《设计模式:可复用面向对象软件的基础》一书通过详细的案例分析和理论介绍,阐述了23种设计模式,并强调了它们在实际项目中的应用价值。 **重要性:** - **代码复用性:** 设计模式鼓励开发者复用经过验证的解决...

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象...4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

    设计模式之命令模式案例代码

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在本文中,我们将深入探讨命令模式的原理、结构和实际应用,并...

Global site tag (gtag.js) - Google Analytics