`
zy19982004
  • 浏览: 663753 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
F6f66edc-1c1a-3859-b76b-a22e740b7aa7
Hadoop学习
浏览量:252400
社区版块
存档分类
最新评论

设计模式学习八:命令模式

阅读更多

一.概念

     命令模式将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

 

二.UML

 

  1. Recevier(动作的接收者)。
  2. Command(命令对象接口),调用命令对象的execute方法,就可以让接收者进行相关的动作。
  3. ConcreteCommand(具体命令),将一个接收者对象绑定在一个操作命令对象上。
  4. Invoker(调用者),持有一个命令对象,并在某个时间点调用命令对象的excute方法,将请求付诸行动。
  5. Client(客户端),负责创建一个具体命令对象,并设置其接收者。

三.代码

     Recevier

package com.zzy.command;

/**
 * 动作的接收者
 * @author eason
 *
 */
public class Receiver {
	public void action() {
		System.out.println("Receiver action()");
	}
}

 

     Command

package com.zzy.command;

/**
 * 命令对象的抽象类
 * @author eason
 *
 */
public abstract class Command {
	
	protected Receiver receiver;
	
	public Command(Receiver receiver) {
		this.receiver = receiver;
	}
	
	public abstract void execute();
	
}

 

     ConcreteCommand

package com.zzy.command;

/**
 * 命令对象具体类
 * 将一个接收者Receiver绑定在一个操作ConcreteCommand上
 * @author eason
 *
 */
public class ConcreteCommand extends Command {

	public ConcreteCommand(Receiver receiver) {
		super(receiver);
	}

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

}

 

     Invoker

package com.zzy.command;

/**
 * 调用者
 * @author eason
 *
 */
public class Invoker {
	
	private Command command;
	
	public void setCommand(Command command) {
		this.command = command;
	}
	
	public void executeCommand() {
		command.execute();
	}
}

 

     TestCommand

package com.zzy.command;

/**
 * client
 * @author eason
 *
 */
public class TestCommand {
	
	public static void main(String[] args) {
		Receiver receiver = new Receiver();
		Command command = new ConcreteCommand(receiver);
		Invoker invoker = new Invoker();
		invoker.setCommand(command);
		invoker.executeCommand();
	}
}

 

四.未完待续

     对于命令模式,因为从来没有在工作中使用到它,理解起来有点费力。这篇文章的水平也就可想而知了。先写到这里,以后在某一场合使用到了命令模式,有了更多的感想,再来和大家分享。

 

0
0
分享到:
评论
2 楼 toflyhigh 2012-05-28  
排版整齐,看起来非常清晰,thanks
1 楼 步青龙 2012-02-22  
排版很整齐,写的很好

相关推荐

    设计模式学习报告

    ### 设计模式学习报告 #### 一、设计模式概述 设计模式是一种被广泛接受和使用的编程解决方案,旨在解决软件设计中的常见问题。它不仅能够帮助开发者编写出更易于理解和维护的代码,还能够促进代码的复用性。设计...

    设计模式学习笔记总结

    这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...

    设计模式C++学习之命令模式(Command)

    命令模式是一种行为设计模式,它将请求封装为一个对象,使得可以使用不同的请求、队列或者日志请求,也可以支持可撤销的操作。在C++中,命令模式的应用可以帮助我们更好地组织代码,提高代码的可扩展性和可维护性。...

    《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式

    《设计模式:可复用面向对象软件的基础》一书介绍了23种经典的设计模式,这些模式大致可以分为三大类: 1. **创建型模式**:专注于对象的创建机制,确保系统在合适的时机创建正确的对象。 - **单例模式**...

    C#设计模式(设计模式的思想:对通用的对象间的相互作用方式进行记录和编目)

    以上只是C#设计模式中的一部分,实际上还有许多其他模式,如命令模式、模板方法模式、迭代器模式等。学习和掌握这些模式,开发者可以更好地设计出可扩展、可维护的系统,提高代码质量。在C#中,由于语言特性的支持,...

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

    本书主要面向已经具备一定面向对象编程基础的读者,旨在通过一系列设计模式的学习,提升读者在实际项目中的设计能力。 #### 核心内容解析 ##### 什么是设计模式? 设计模式是针对软件设计中出现的常见问题而提出...

    设计模式学习心得(研磨设计模式)

    这篇“设计模式学习心得(研磨设计模式)”博客及其相关的PDF文档,为我们提供了一个深入理解和应用设计模式的宝贵资源。以下将针对单例模式、工厂方法模式、策略模式、命令模式和桥接模式进行详细讲解。 1. **单例...

    设计模式学习笔记-命令模式

    命令模式是一种行为设计模式,它的主要目的是将请求封装为对象,以便于参数化不同请求、队列请求、记录请求日志以及支持撤销和重做操作。在软件开发中,它帮助解耦了请求发起者(调用者)和请求执行者(接收者),...

    设计模式学习笔记及其模式特点总结

    这些文档涵盖了设计模式的基础知识,通过阅读和学习,你可以深入了解每种模式的原理、应用场景及其实现方式,从而提升你的软件设计能力。绘图1.vsd可能是用于描绘设计模式的UML类图或其他图表,它能直观地展示各对象...

    23种设计模式(C++).pdf

    《设计模式精解-GoF 23 种设计模式解析附 C++实现源码》是一本深入探讨软件设计模式的书籍,它涵盖了创建型、结构型和行为...通过学习和应用这些设计模式,开发者可以更好地设计出高质量、易于维护和扩展的软件系统。

    java之23种设计模式完整代码

    这些设计模式的代码示例对于Java开发者来说,是非常宝贵的学习材料。通过实践这些代码,你可以深入了解每种模式的实现细节,了解它们如何提高代码的可扩展性和可维护性。同时,对比不同模式的应用,可以帮助你更好地...

    Gof设计模式设计模式设计模式PDF

    《Gof设计模式设计模式设计模式PDF》是一个深入学习设计模式的重要资源,包含了全面而详尽的设计模式理论和实践知识。设计模式是软件工程中的一种最佳实践,它为解决常见问题提供了一种可复用的解决方案,使得代码...

    GOF23种设计模式

    GOF(GoF)23种设计模式,是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大神在他们的著作《设计模式:可复用面向对象软件的基础》中提出的,这些模式分为创建型、结构型和行为型三大类。...

    C# 设计模式学习 源码

    本资料包“C# 设计模式学习 源码”包含了作者在学习设计模式过程中的笔记和源码示例,对于想要深入理解C#设计模式的人来说是一份宝贵的资源。 设计模式分为三大类:创建型、结构型和行为型。下面将详细介绍这些类别...

    HeadFirst设计模式学习笔记

    《HeadFirst设计模式学习笔记》是一份详尽的资料,旨在帮助读者深入理解并掌握设计模式这一编程领域的核心概念。设计模式是软件工程中的一种最佳实践,它在解决常见问题时提供了一种标准的解决方案,使得代码更易于...

    head first设计模式学习代码

    《Head First设计模式学习代码详解》 设计模式是软件工程中的宝贵经验总结,它提供了一套通用的解决方案模板,帮助开发者在面对复杂问题时能够快速有效地进行设计和开发。Head First设计模式是一本非常受欢迎的设计...

    java设计模式学习笔记,以及各种模式的代码实现

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可复用性。这些模式是面向对象编程中的一种最佳实践,通过标准化的方式处理常见的设计问题。下面...

    设计模式之命令模式源码示例

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式广泛应用在各种场景中,以提高代码的灵活...

Global site tag (gtag.js) - Google Analytics