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

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

阅读更多

一.概念

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

 

二.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++学习之命令模式(Command)

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

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

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

    尚硅谷设计模式源码笔记课件.zip

    行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员...

    java后端开发+java23种设计模式学习demo

    里面包含常规算法学习demo; 设计模式的分类 ...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

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

    代理模式学习笔记、单例模式学习笔记、命令模式、原型模式、模式特点总结。 为个人对设计模式的理解,如果有理解不一致的不要砸砖啊

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

    书名: 设计模式可复用面向对象软件的基础 英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价...

    java设计模式学习文档.pdf

    培养学生掌握简单工厂模式、工厂方法模式、单例模式、原型模式、桥接模式、适配器模式、装饰模式、代理模式、命令模式、观察者模式等常用设计模式的设计思想,并掌握在实际软件工程领域中的运用,能够把所学的原理...

    面向对象初学者必须掌握的几种设计模式

    观察者模式 Observer:Swing中的事件模型 工厂模式 Factory:在JDK中遍地都是,比如JDBC、JNDI等,是学习Spring的基础 命令模式 Command:Struts框架的基石 单例模式 Singleton:最简单的设计模式,大量...

    Java常用设计模式例子

    以JAVA为例,汇总了十几种常用的设计模式,包括了:单例模式、工厂模式、建造者模式、适配器模式、装饰器模式、外观模式、命令模式、观察者模式、状态模式、策略模式、模板方法模式等。仅供学习使用。 相关文章请看...

    java设计模式-命令模式

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

    设计模式之Command(命令)模式

    有关设计模式里边的命令模式,内含ppt、源代码及结果、word整理。在此以供大家学习交流。

    《c#设计模式》电子书+随书源码

    本书是第一部关于C#和.NET设计模式的权威指导著作,为基于C#语言和Microsoft ® .NET框架的开发人员学习设计模式和应用设计模式提供了一个完整全面的理论框架和大量的详细应用实例。 本书内容覆盖了所有23个经典的...

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

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

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

    也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 适配器模式(Adapter) 第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章...

    代理+命令模式学习笔记

    代理设计模式、命令模式学习笔记,其中包含对模式的理解以及详细的模式使用示例

    设计模式实例,包括桥接模式、命令模式。

    Java版本的设计模式实例,其中包括“桥接模式、命令模式”两个实例,这都是我自己学习后自己写的。。。希望大家指导。。。

    js命令模式+装饰模式小demo

    学习js设计模式的例子,用到了命令模式、修装模式

    NET 设计模式

    代码可以运行,下载这个后,建议买->《大话设计...14、命令模式 15、职责链模式 16、中介者模式 17、享元模式 18、解释器模式 19、访问者模式 20、策略模式 21、装饰模式 22、代理模式 23、工厂方法模式 24、原型模式

    设计模式--C++

    1.1 什么是设计模式 2 1.2 Smalltalk MVC 中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象...

Global site tag (gtag.js) - Google Analytics