主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。对行为进行"记录、撤销/重做、事务"等处理

public class Main {public static void main(String[] args) {Content c = new Content();Command insertCommand = new InsertCommand(c);insertCommand.doit();insertCommand.undo();Command copyCommand = new CopyCommand(c);insertCommand.doit();insertCommand.undo();Command deleteCommand = new DeleteCommand(c);deleteCommand.doit();deleteCommand.undo();List<Command> commands = new ArrayList<>();commands.add(new InsertCommand(c));commands.add(new CopyCommand(c));commands.add(new DeleteCommand(c));for(Command comm : commands) {comm.doit();}System.out.println(c.msg);for(int i= commands.size()-1; i>=0; i--) {commands.get(i).undo();}System.out.println(c.msg);}
}public class CopyCommand extends Command {Content c;public CopyCommand(Content c) {this.c = c;}@Overridepublic void doit() {c.msg = c.msg + c.msg;}@Overridepublic void undo() {c.msg = c.msg.substring(0, c.msg.length()/2);}
}

命令模式-Command相关推荐

  1. 【白话设计模式八】命令模式(Command)

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factory) [白话设计模式二] ...

  2. 设计模式:命令模式(Command Pattern)

    命令模式(Command Pattern): 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接受者是谁,也不知道请求的操作是哪个. 我们只需在程序运行时指定具体的请求接受者即可,此时 ...

  3. c++命令模式command

    c++命令模式command 概念 角色和职责 案例 概念 Command模式也叫命令模式 ,是行为设计模式的一种.Command模式通过被称为 Command的类封装了对目标对象的调用行为以及调用参 ...

  4. 设计模式 - 命令模式(command pattern) 撤销(undo) 具体解释

    命令模式(command pattern) 撤销(undo) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 參考命令模式: http://blog.cs ...

  5. 乐在其中设计模式(C#) - 命令模式(Command Pattern)

    原文:乐在其中设计模式(C#) - 命令模式(Command Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 命令模式(Command Pattern) 作者:webabcd ...

  6. 设计模式之命令模式(Command)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  7. 设计模式系列3-----C++实现命令模式(Command Pattern)

    什么是命令模式? GoF的书的定义为:"Command pattern encapsulate request as an object, thereby letting you param ...

  8. Java设计模式-命令模式Command

    定义 将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化.用于"行为请求者"与"行为实现者"解耦,可实现二者之间的松耦合,以便适应变化.分离 ...

  9. C++设计模式--命令模式(Command)

    概述 命令模式的结构很简单,但是对于消除代码间的耦合却有着重要的影响.命令模式就是一个函数对象:一个作为对象的函数.通过将函数封装为对象,就能够以参数的形式将其传递给其他函数或者对象,告诉它们在旅行请 ...

  10. 趣谈设计模式 | 命令模式(Command):将命令封装为对象

    文章目录 案例:智能遥控 命令模式 应用场景 队列请求 日志系统 总结 完整代码与文档 命令模式的应用场景较少,且不易理解,因此我也不好举例,所以下面的描述可能会存在一些问题,请见谅 案例:智能遥控 ...

最新文章

  1. linux mint 蓝牙,Linuxmint19蓝牙连接的问题
  2. GCC 编译 --sysroot
  3. 在公司交了十年社保了,退休了,自己还要补交六、七万元社保,你觉得该不该补交?
  4. jdba访问mysql_Java中JDBC操作数据库的步骤
  5. 一个间歇性进程hang问题的处理
  6. shared memory global memory constant memory in cuda
  7. SD-WAN平台ActiveCore推出,领域新亮点精彩丰呈
  8. Bailian3258 兔子产子【递推+打表】
  9. C语言丨约瑟夫问题(约瑟夫环)
  10. 黑马程序员全套Java教程_Java基础教程_API(十四)
  11. 全球与中国乳制品替代杏仁制品市场深度研究分析报告
  12. 小白股市扫盲系列--美联储加息减息对市场究竟有什么影响?
  13. Android自定义锁屏的实现
  14. OPPOR9plusmA_官方线刷包_救砖包_解账户锁
  15. arx cloneSameOwnerObjects
  16. 深度技术GhostXP专业版V9.0之初体验
  17. 在OpenGL中实现Geometry Instancing
  18. ES搜索引擎-简单入门
  19. 数字化转型,要把功夫炼到任督二脉
  20. MKS Robin Nano V3.0使用说明书

热门文章

  1. Tomcat 发布部署jsp网站—-使用自己的ip访问jsp网站
  2. 在idea中使用maven打包项目跳过测试代码
  3. 2021-08-11 WPF控件专题 ListView控件详解
  4. QCustomPlot之瀑布图(十五)
  5. LoRa终端低功耗策略
  6. 统计学中I和II类错误
  7. 计算机组成原理慕课测试-期末考试
  8. 关于视频编码器的作用详细介绍
  9. python进程池与线程池
  10. 机器视觉(三):摄像机标定技术