`
wolfzha
  • 浏览: 45568 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

设计模式笔记之五 命令模式

阅读更多

 

命令模式的定义: 将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

 

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 ...

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

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

    设计模式学习笔记总结

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

    根据《JAVA与设计模式》整理的笔记及示例代码

    这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...

    HeadFirst设计模式学习笔记

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

    设计模式读书笔记

    设计模式是软件开发中的一种最佳实践,用于解决常见的设计问题并提供可重用的解决方案。在本文档中,我们主要探讨了设计模式的基本概念和分类,以及“状态机模式”这一特定的设计模式。 首先,设计模式可以分为三大...

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

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

    台湾人写的设计模式笔记

    这份由台湾作者编写的笔记,结合Java语言,为读者提供了一种深入理解并应用设计模式的方式。以下是对这些设计模式的详细解释: 1. **创建型模式(Creational Patterns)** 创建型模式关注于对象的创建过程,它们帮助...

    Java设计模式之命令模式/Java函数式编程 笔记

    Java设计模式之命令模式/Java函数式编程 笔记

    23种设计模式学习笔记及源码

    这个压缩包文件包含了23种设计模式的学习笔记和源码,旨在帮助开发者深入理解并熟练运用这些模式。以下是对每种设计模式的详细解释,以及它们在Java编程中的应用。 1. **单例模式**:确保一个类只有一个实例,并...

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

    "设计模式之禅"是一本介绍设计模式的书籍,书中深入浅出地讲解了设计模式的精髓,帮助读者理解和掌握如何在实际开发中应用设计模式。不完整版可能意味着只包含部分章节或部分内容。 这些文档涵盖了设计模式的基础...

    23种设计模式学习笔记

    这个“23种设计模式学习笔记”文档将引导你深入理解这些模式,并帮助你在实际编程中有效地应用它们。以下是对23种设计模式的详细解读: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于控制...

    图解Java设计模式笔记总结word版本.rar

    本资料“图解Java设计模式笔记总结word版本”聚焦于通过图文并茂的方式,深入浅出地解析各种设计模式。以下是基于这个主题的详细知识点讲解: 1. **设计模式的分类** - **创建型模式**:如单例(Singleton)、工厂...

    设计模式教程及笔记

    本教程聚焦于C++实现的设计模式,通过英文原版教程和配套的笔记,帮助开发者深入理解和掌握这些模式。 首先,我们要了解设计模式的三大分类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的创建过程,...

    设计模式的读书总结笔记

    这篇“设计模式的读书总结笔记”是对设计模式深入理解和应用的结晶,包含对各种模式的实例解析、优缺点分析以及如何在实际项目中应用的指导。 一、设计模式的基本概念 设计模式并不直接提供代码实现,而是描述在...

    设计模式笔记总结 含C#示例代码 复习好帮手

    ### 设计模式笔记总结 本篇文章是对一份设计模式学习资料的深入解读,这份资料包含了19种经典的设计模式,并提供了C#示例代码,适用于学习和复习。下面将逐一介绍这些设计模式及其核心概念。 #### 1. 简单工厂模式...

    设计模式经典样例笔记与代码Swift.zip

    设计模式经典样例笔记与代码Swift.zip 基础 [x] 类间的关系 [x] 设计原则 创建型 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定...

    图解设计模式 ,结城浩著 学习笔记

    根据给定的信息“图解设计模式,结城浩著学习笔记”,我们可以推断出这份文档主要涉及了设计模式的学习和理解。《图解设计模式》是一本由日本著名程序员结城浩撰写的书籍,该书以图形化的方式深入浅出地讲解了软件...

    设计模式笔记(包含所有设计模式)个人总结提炼笔记

    2. 命令模式:将请求封装为一个对象,使得你可以用不同的请求参数化其他对象,也支持可撤销操作。 3. 解释器模式:提供了表达特定语言的语法和语义的方式,用于构建解析器。 4. 迭代器模式:提供一种方法顺序访问...

Global site tag (gtag.js) - Google Analytics