[设计模式] 15.Command 命令模式
命令池(采用堆或栈皆可)维护着一组命令集合。
只要这些命令实现同个命令接口或者命令抽象类,就能够被命令池依次执行。
{
static void Main()
{
//命令模式:将无论哪个实例的方法抽象成对应的命令放入命令池。命令池会自动执行。
Printer printer = new Printer();
Scanner scanner = new Scanner();
PrintCommand pc = new PrintCommand(printer);
ScanCommand sc = new ScanCommand(scanner);
CommandQueue.Instance.Enquee(pc);
CommandQueue.Instance.Enquee(sc);
}
}
public class CommandQueue : Queue<ICommand>
{
单例#region 单例
private static class CommandQueueInstance
{
public static readonly CommandQueue Instance = new CommandQueue();
}
public static CommandQueue Instance
{
get
{
return CommandQueueInstance.Instance;
}
}
#endregion
private Timer _t;
private CommandQueu()
{
_t = new Timer(new TimerCallback(Execute), null, 5000, 200);
}
private void Execute(object obj)
{
if (this.Count > 0)
{
ICommand cmd = this.Dequeue();
cmd.Execute();
}
}
}
public interface ICommand
{
void Execute();
}
public class PrintCommand : ICommand
{
private Printer _printer;
public PrintCommand( Printer printer)
{
_printer = printer;
}
public virtual void Execute()
{
_printer.Print();
}
}
public class ScanCommand : ICommand
{
private Scanner _scanner;
public ScanCommand(Scanner scanner)
{
_scanner = scanner;
}
public virtual void Execute()
{
_scanner.Scan();
}
}
public class Printer
{
public void Print()
{
Console.WriteLine("Print.");
}
}
public class Scanner
{
public void Scan()
{
Console.WriteLine("Scan.");
}
}
转载于:https://www.cnblogs.com/yurichou/archive/2007/08/13/854151.html
[设计模式] 15.Command 命令模式相关推荐
- 【白话设计模式八】命令模式(Command)
为什么80%的码农都做不了架构师?>>> #0 系列目录# 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factory) [白话设计模式二] ...
- 设计模式学习笔记(十七)——Command命令模式
设计模式学习笔记(十七)--Command命令模式 Command命令模式介绍: Command命令模式是一种对象行为型模式,它主要解决的问题是:在软件构建过程中,"行为请求者"与 ...
- C++设计模式-Command命令模式
Command命令模式 作用:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作. 由于"行为请求者"与"行 ...
- Head First 设计模式中的命令模式 的一个错误
最近在看Head First 设计模式,其中命令模式中有讲到实现撤销功能,并且作者还出了一道题, 下面的是书中习题: public class MarcoCommand implements Comm ...
- 走穿java23种设计模式-15责任链模式详解
走穿java23种设计模式-15责任链模式详解 责任链模式是一种常见的行为模式. 一.责任链模式的现实场景 习伟过生日邀请了很多朋友到KTV一起庆祝,为了增加欢乐的气氛,习伟建议大家一起玩击鼓传花的游 ...
- 设计模式之禅-命令模式
目录 命令模式 例子 定义 优点 缺点 使用场景 扩展 增加需求 回滚 完美的Command 命令模式 例子 外包甲方项目..刚开始,客户(也就是旅行社,甲方)很乐意和我们每个组探讨,比如和需求组讨论 ...
- 步步为营 .NET 设计模式学习笔记 九、Command(命令模式)
概述 在软件系统中,"行为请求者"与"行为实现者"通常呈现一种"紧耦合".但在某些场合,比如要对行为进行"记录.撤销/重做.事务& ...
- 设计模式学习笔记——命令模式(Command)
1.特点:将请求发送者与具体实现者解耦,可对请求排列.取消.重做,支持事务.(多请求,单处理) 2.概念:属于对象的行为模式[GOF95].命令模式又称为行动(Action)模式或交易(Transac ...
- [C++设计模式] command 命令模式
在软件系统中,"行为请求者"与"行为实现者"通常呈现一种"紧耦合". 但在某些场合,比方要对行为进行"记录.撤销/重做.事务&qu ...
最新文章
- 编译安装keepalived-1.2.2.tar.gz报错处理
- SQL Server 2016新特性:列存储索引新特性
- Flex的NumericStepper控件
- 每日一皮:你偷偷藏私房钱时被老婆发现的样子...
- 自动装配——@Autowired@Qualifier@Primary
- TRUNCATE,DELETE,DROP的区别
- IOS上的 Audio Memos SE 如何分享和传输录音到电脑?
- [scala-spark]11. RDD控制操作
- 点击下载!《阿里云SRE技术期刊》2021年5月刊发布啦!
- 在MySQL上使用带密码的GlassFish JDBC安全性
- Excel还是那些事
- 2020年互联网人年终模板,是你在找的吗?
- windows 下 vmware 安装 Mac X lion 10.7 终极教程!
- 从Java到C++——常量的使用规则
- 阶段性总结、反思、计划
- 【POJ3335】Rotating Scoreboard(多边形的内核-----半平面交+特殊情况)
- 让你的软件支持繁体中文
- ERP ERP原理与应用试题(附答案)
- 【RFID】RFID的标准体系
- 三角函数π/2转化_高中诱导公式全集,有了它,三角函数公式一网打尽
热门文章
- 将函数实现放在头文件中
- 8086汇编-实验7-制表
- [Jarvis OJ - PWN]——[XMAN]level2(x64)
- 在php里面怎么做日期范围,如何在php中获得上周的日期范围?
- php发送验证图片,php生成图片验证码_PHP教程
- 计算机的主存储器可以分为哪两类,2017年计算机应用基础模拟试题「答案」(2)...
- 5G NR 决定CORESET0频域位置的offset取值由来
- 深入理解Java类加载器:Java类加载原理解析
- oracle cast multiset table 语法演示
- Intel(R)Turbo Boost Technology Driver上面显示为感叹号