博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载] C#面向对象设计模式纵横谈——15 Command命令模式
阅读量:6037 次
发布时间:2019-06-20

本文共 1661 字,大约阅读时间需要 5 分钟。

主讲:李建忠

来源:

 

 

1:  //已经存在的,实现细节,低层实现
2:  class Document
3:  {
4:      public void ShowText()
5:      {
6:          //...
7:      }
8:  }
9:   
10:  class Graphics
11:  {
12:      public void ShowGraphics()
13:      {
14:          //...
15:      }
16:  }
17:   
18:  //实现Command设计模式
19:  public interface Command
20:  {
21:      public void Show();
22:      public void Undo();
23:      public void Redo();
24:  }
25:   
26:  //具体化的命令对象——从抽象意义来讲,DocumentCommand表示一个行为
27:  class DocumentCommand:Command
28:  {
29:      Document document;
30:      public DocumentCommand(Document doc)
31:      {
32:          this.document=doc;
33:      }
34:   
35:      public void Show()
36:      {
37:          document.ShowText();
38:      }
39:   
40:      public void Undo()
41:      {
42:   
43:      }
44:   
45:      public void Redo()
46:      {
47:   
48:      }
49:  }
50:   
51:  class GraphicCommand:Command
52:  {
53:   
54:  }
55:   
56:  //应用程序主干,高层抽象
57:  class Application
58:  {
59:      Stack stack;
60:   
61:      public void Show()
62:      {
63:          foreach(Command c in list)
64:          {
65:              c.show();
66:          }
67:      }
68:   
69:      public void Undo()
70:      {
71:          if(canUndo)
72:          {
73:              Command command=stack.pop();
74:              command.Undo();
75:   
76:              undoList.Add(command);
77:          }
78:      }
79:   
80:      public void Redo()
81:      {
82:          if(canRedo)
83:          {
84:              Command command=undoList.pop();
85:              command.Undo();
86:          }
87:      }
88:  }

 

转载于:https://www.cnblogs.com/6DAN_HUST/archive/2012/10/16/2726318.html

你可能感兴趣的文章
Storm的数据处理编程单元:Bolt 学习整理
查看>>
新浪微博客户端(33)-显示头像上的认证类型
查看>>
Bloomberg面经准备: Josephus problem
查看>>
自己动手写CPU之第四阶段(3)——MIPS编译环境的建立
查看>>
此博客不再更新
查看>>
吴恩达机器学习笔记 —— 13 支持向量机
查看>>
HDFS集群balance(4)-- 测试计划
查看>>
sqlite 数据库 查询时显示表字段
查看>>
css hack 【转】http://blog.csdn.net/arcow/article/details/1681027
查看>>
《C++编程规范》
查看>>
以对象管理资源——C++智能指针auto_ptr简介
查看>>
用飞信监控GoldenGate进程
查看>>
VS里面如何设置环境默认的开发语言
查看>>
画图er软件
查看>>
关于Repository模式
查看>>
SQL Server2014 SP2新增的数据库克隆功能
查看>>
elastic-job详解(一):数据分片
查看>>
【安装】Matlab7.0简介及安装
查看>>
python发送邮件源码 | the5fire的技术博客
查看>>
如何快速学习一个开源项目源码?
查看>>