一.概念
命令模式将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
二.UML
- Recevier(动作的接收者)。
- Command(命令对象接口),调用命令对象的execute方法,就可以让接收者进行相关的动作。
- ConcreteCommand(具体命令),将一个接收者对象绑定在一个操作命令对象上。
- Invoker(调用者),持有一个命令对象,并在某个时间点调用命令对象的excute方法,将请求付诸行动。
- 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();
}
}
四.未完待续
对于命令模式,因为从来没有在工作中使用到它,理解起来有点费力。这篇文章的水平也就可想而知了。先写到这里,以后在某一场合使用到了命令模式,有了更多的感想,再来和大家分享。
分享到:
相关推荐
### 设计模式学习报告 #### 一、设计模式概述 设计模式是一种被广泛接受和使用的编程解决方案,旨在解决软件设计中的常见问题。它不仅能够帮助开发者编写出更易于理解和维护的代码,还能够促进代码的复用性。设计...
这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...
命令模式是一种行为设计模式,它将请求封装为一个对象,使得可以使用不同的请求、队列或者日志请求,也可以支持可撤销的操作。在C++中,命令模式的应用可以帮助我们更好地组织代码,提高代码的可扩展性和可维护性。...
《设计模式:可复用面向对象软件的基础》一书介绍了23种经典的设计模式,这些模式大致可以分为三大类: 1. **创建型模式**:专注于对象的创建机制,确保系统在合适的时机创建正确的对象。 - **单例模式**...
以上只是C#设计模式中的一部分,实际上还有许多其他模式,如命令模式、模板方法模式、迭代器模式等。学习和掌握这些模式,开发者可以更好地设计出可扩展、可维护的系统,提高代码质量。在C#中,由于语言特性的支持,...
本书主要面向已经具备一定面向对象编程基础的读者,旨在通过一系列设计模式的学习,提升读者在实际项目中的设计能力。 #### 核心内容解析 ##### 什么是设计模式? 设计模式是针对软件设计中出现的常见问题而提出...
这篇“设计模式学习心得(研磨设计模式)”博客及其相关的PDF文档,为我们提供了一个深入理解和应用设计模式的宝贵资源。以下将针对单例模式、工厂方法模式、策略模式、命令模式和桥接模式进行详细讲解。 1. **单例...
命令模式是一种行为设计模式,它的主要目的是将请求封装为对象,以便于参数化不同请求、队列请求、记录请求日志以及支持撤销和重做操作。在软件开发中,它帮助解耦了请求发起者(调用者)和请求执行者(接收者),...
这些文档涵盖了设计模式的基础知识,通过阅读和学习,你可以深入了解每种模式的原理、应用场景及其实现方式,从而提升你的软件设计能力。绘图1.vsd可能是用于描绘设计模式的UML类图或其他图表,它能直观地展示各对象...
《设计模式精解-GoF 23 种设计模式解析附 C++实现源码》是一本深入探讨软件设计模式的书籍,它涵盖了创建型、结构型和行为...通过学习和应用这些设计模式,开发者可以更好地设计出高质量、易于维护和扩展的软件系统。
这些设计模式的代码示例对于Java开发者来说,是非常宝贵的学习材料。通过实践这些代码,你可以深入了解每种模式的实现细节,了解它们如何提高代码的可扩展性和可维护性。同时,对比不同模式的应用,可以帮助你更好地...
《Gof设计模式设计模式设计模式PDF》是一个深入学习设计模式的重要资源,包含了全面而详尽的设计模式理论和实践知识。设计模式是软件工程中的一种最佳实践,它为解决常见问题提供了一种可复用的解决方案,使得代码...
GOF(GoF)23种设计模式,是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大神在他们的著作《设计模式:可复用面向对象软件的基础》中提出的,这些模式分为创建型、结构型和行为型三大类。...
本资料包“C# 设计模式学习 源码”包含了作者在学习设计模式过程中的笔记和源码示例,对于想要深入理解C#设计模式的人来说是一份宝贵的资源。 设计模式分为三大类:创建型、结构型和行为型。下面将详细介绍这些类别...
《HeadFirst设计模式学习笔记》是一份详尽的资料,旨在帮助读者深入理解并掌握设计模式这一编程领域的核心概念。设计模式是软件工程中的一种最佳实践,它在解决常见问题时提供了一种标准的解决方案,使得代码更易于...
《Head First设计模式学习代码详解》 设计模式是软件工程中的宝贵经验总结,它提供了一套通用的解决方案模板,帮助开发者在面对复杂问题时能够快速有效地进行设计和开发。Head First设计模式是一本非常受欢迎的设计...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可复用性。这些模式是面向对象编程中的一种最佳实践,通过标准化的方式处理常见的设计问题。下面...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式广泛应用在各种场景中,以提高代码的灵活...