命令模式的定义: 将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
UML图(暂略)
例子:
/**
* 命令接口类
*/
public interface ICommand {
/**
* 执行接口
*/
public void execute();
/**
* 撤销接口
*/
public void undo();
}
/**
* 具体的命令实现类1
*/
public class ConcreteCommand1 implements ICommand {
private Receiver1 receiver;
public ConcreteCommand1(Receiver1 receiver) {
this.receiver = receiver;
}
@Override
public void execute() {
System.out.println("ConcreteCommand1 execute...");
receiver.doSomething();
}
@Override
public void undo() {
System.out.println("ConcreteCommand1 undo...");
receiver.doSomething2();
}
}
/**
* 具体的命令实现类2
*/
public class ConcreteCommand2 implements ICommand {
private Receiver2 receiver;
public ConcreteCommand2(Receiver2 receiver) {
this.receiver = receiver;
}
@Override
public void execute() {
System.out.println("ConcreteCommand2 execute...");
receiver.doSomething();
}
@Override
public void undo() {
System.out.println("ConcreteCommand2 undo...");
receiver.doSomething2();
}
}
/**
* 命令接收者1
*/
public class Receiver1 {
/**
* 命令具体实现
*/
public void doSomething() {
System.out.println("Receiver1 doSomething...");
}
/**
* 命令具体实现
*/
public void doSomething2() {
System.out.println("Receiver1 doSomething2...");
}
}
/**
* 命令接收者2
*/
public class Receiver2 {
/**
* 命令具体实现
*/
public void doSomething() {
System.out.println("Receiver2 doSomething...");
}
/**
* 命令具体实现
*/
public void doSomething2() {
System.out.println("Receiver2 doSomething2...");
}
}
/**
* 命令模式的使用
*/
public class TestCommand {
/**
* @param args
*/
public static void main(String[] args) {
ICommand command1 = new ConcreteCommand1(new Receiver1());
command1.execute();
command1.undo();
ICommand command2 = new ConcreteCommand2(new Receiver2());
command2.execute();
command2.undo();
}
}
分享到:
相关推荐
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的...设计模式笔记中的内容应该涵盖了以上所述的各种模式,通过深入学习和实践,你可以将这些模式应用到实际项目中,提升自己的编程技能和设计能力。
在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...
行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员...
这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...
这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...
《HeadFirst设计模式学习笔记》是一份详尽的资料,旨在帮助读者深入理解并掌握设计模式这一编程领域的核心概念。设计模式是软件工程中的一种最佳实践,它在解决常见问题时提供了一种标准的解决方案,使得代码更易于...
设计模式是软件开发中的一种最佳实践,用于解决常见的设计问题并提供可重用的解决方案。在本文档中,我们主要探讨了设计模式的基本概念和分类,以及“状态机模式”这一特定的设计模式。 首先,设计模式可以分为三大...
命令模式是一种行为设计模式,它的主要目的是将请求封装为对象,以便于参数化不同请求、队列请求、记录请求日志以及支持撤销和重做操作。在软件开发中,它帮助解耦了请求发起者(调用者)和请求执行者(接收者),...
这份由台湾作者编写的笔记,结合Java语言,为读者提供了一种深入理解并应用设计模式的方式。以下是对这些设计模式的详细解释: 1. **创建型模式(Creational Patterns)** 创建型模式关注于对象的创建过程,它们帮助...
Java设计模式之命令模式/Java函数式编程 笔记
这个压缩包文件包含了23种设计模式的学习笔记和源码,旨在帮助开发者深入理解并熟练运用这些模式。以下是对每种设计模式的详细解释,以及它们在Java编程中的应用。 1. **单例模式**:确保一个类只有一个实例,并...
"设计模式之禅"是一本介绍设计模式的书籍,书中深入浅出地讲解了设计模式的精髓,帮助读者理解和掌握如何在实际开发中应用设计模式。不完整版可能意味着只包含部分章节或部分内容。 这些文档涵盖了设计模式的基础...
这个“23种设计模式学习笔记”文档将引导你深入理解这些模式,并帮助你在实际编程中有效地应用它们。以下是对23种设计模式的详细解读: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于控制...
本资料“图解Java设计模式笔记总结word版本”聚焦于通过图文并茂的方式,深入浅出地解析各种设计模式。以下是基于这个主题的详细知识点讲解: 1. **设计模式的分类** - **创建型模式**:如单例(Singleton)、工厂...
本教程聚焦于C++实现的设计模式,通过英文原版教程和配套的笔记,帮助开发者深入理解和掌握这些模式。 首先,我们要了解设计模式的三大分类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的创建过程,...
这篇“设计模式的读书总结笔记”是对设计模式深入理解和应用的结晶,包含对各种模式的实例解析、优缺点分析以及如何在实际项目中应用的指导。 一、设计模式的基本概念 设计模式并不直接提供代码实现,而是描述在...
### 设计模式笔记总结 本篇文章是对一份设计模式学习资料的深入解读,这份资料包含了19种经典的设计模式,并提供了C#示例代码,适用于学习和复习。下面将逐一介绍这些设计模式及其核心概念。 #### 1. 简单工厂模式...
设计模式经典样例笔记与代码Swift.zip 基础 [x] 类间的关系 [x] 设计原则 创建型 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定...
根据给定的信息“图解设计模式,结城浩著学习笔记”,我们可以推断出这份文档主要涉及了设计模式的学习和理解。《图解设计模式》是一本由日本著名程序员结城浩撰写的书籍,该书以图形化的方式深入浅出地讲解了软件...
2. 命令模式:将请求封装为一个对象,使得你可以用不同的请求参数化其他对象,也支持可撤销操作。 3. 解释器模式:提供了表达特定语言的语法和语义的方式,用于构建解析器。 4. 迭代器模式:提供一种方法顺序访问...