Command模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在C#编程中,利用.NET框架的特性,如委托和泛型,我们可以优雅地实现Command模式。 我们来理解Command模式的基本结构。模式包含以下几个角色: 1. **Command**(命令):声明一个接口,用于接收执行请求的方法。 2. **ConcreteCommand**(具体命令):实现了Command接口,知道如何接收请求并调用接收者的相应操作。 3. **Invoker**(调用者):持有Command对象并调用其Execute方法来执行请求。 4. **Receiver**(接收者):知道如何执行与请求相关的操作。 在C#中,我们可以使用委托作为Command接口的实现,因为它可以表示一个方法调用。例如: ```csharp public delegate void Command(object parameter); ``` 接下来,创建具体的命令类,如`ConcreteCommandA`和`ConcreteCommandB`,它们分别实现特定的功能: ```csharp public class ConcreteCommandA : Command { private Receiver _receiver; public ConcreteCommandA(Receiver receiver) { _receiver = receiver; } public override void Execute(object parameter) { _receiver.ActionA(parameter); } } public class ConcreteCommandB : Command { private Receiver _receiver; public ConcreteCommandB(Receiver receiver) { _receiver = receiver; } public override void Execute(object parameter) { _receiver.ActionB(parameter); } } ``` 接收者类`Receiver`包含命令需要执行的具体操作: ```csharp public class Receiver { public void ActionA(object parameter) { // 执行操作A } public void ActionB(object parameter) { // 执行操作B } } ``` 调用者`Invoker`持有命令对象并调用`Execute`方法: ```csharp public class Invoker { private Command _command; public void SetCommand(Command command) { _command = command; } public void ExecuteCommand() { _command.Execute(null); // 可以传递参数 } } ``` 现在,你可以根据需求创建不同的具体命令实例,并在调用者中设置它们: ```csharp public static void Main(string[] args) { Receiver receiver = new Receiver(); Invoker invoker = new Invoker(); invoker.SetCommand(new ConcreteCommandA(receiver)); invoker.ExecuteCommand(); // 执行操作A invoker.SetCommand(new ConcreteCommandB(receiver)); invoker.ExecuteCommand(); // 执行操作B } ``` 至于泛型,它允许Command模式更加灵活。通过定义泛型委托,你可以创建能处理不同类型命令的通用命令接口。例如: ```csharp public delegate void GenericCommand(T parameter); ``` 这样,`ConcreteCommandA`和`ConcreteCommandB`可以修改为接受特定类型参数: ```csharp public class ConcreteCommandA : GenericCommand { private Receiver _receiver; public ConcreteCommandA(Receiver receiver) { _receiver = receiver; } public override void Invoke(T parameter) { _receiver.ActionA(parameter); } } // 类似地,为ConcreteCommandB实现 ``` 通过这种方式,Command模式在C#中的实现结合了.NET的委托和泛型,使得代码更加灵活、易于扩展和维护。同时,提供的示例代码如`Command_Demo.zip`、`Command_cs.zip`和`An-implementation-of-Command-pattern-in-C.pdf`将提供更深入的实践理解和应用案例。
2024-11-28 16:20:47 175KB Windows .NET WinXP Win32
1
### VESA Monitor Control Command Set (MCCS) Standard Version 2 Revision 2 #### 标准概述 VESA Monitor Control Command Set (MCCS) Standard Version 2 Revision 2 是由 Video Electronics Standards Association (VESA) 发布的一项标准,旨在为显示器提供一套标准化的命令集与控制方式。此标准于 2009 年 1 月 19 日发布,其主要目的是在保持与 MCCS 2.1 版本完全兼容的基础上,整合 Virtual Control Panel (VCP) 代码以及采用自 MCCS V3.0 的文档格式。 #### 目的 该版本的主要目标是: - 整合 Virtual Control Panel (VCP) 代码及其文档格式。 - 维持与 MCCS V2.1 的完全兼容性。 - 定义了所有 MCCS VCP 代码的合规性要求。 - 增强 Direct Drive Monitor (DDM) 显示器中的性能表现。 #### 标准内容概览 该文档详细介绍了用于识别和控制通过应用程序运行在连接主机上的显示器的一系列标准化命令和控制。这些命令和控制虽然被精简到最少数量,但支持几乎所有与显示器屏幕设置相关的参数控制。值得注意的是,该标准并没有描述如何通过特定视频接口协议来通信这些命令。 此外,文档还假设连接显示器到主机的视频接口可以发出未请求的注意呼叫(中断或热插拔检测 HPD),以通知主机发生了一些超出主机控制范围的事情。该标准的目标设备是连接到 PC、工业显示控制器或消费电子源的显示器,但并不局限于这些领域。 #### 版本 3 的目的及变化 版本 3 包括多个目的: - 纠正已知错误。 - 澄清某些 VCP 代码的使用方法。 - 对部分 VCP 代码进行新定义。 - 引入新的 VCP 代码。 此修订版融合了这些修正、澄清和新定义,但为了保持向后兼容性而重新定义了必要的部分。此外,该修订版不再支持并保留了未来可能不会使用的 VCP 代码 C7h(Display Enable Key)和 VCP 代码 13h(Backlight Control),因为这两个代码并未达到预期的效果。此外,版本 3 中增加的合规性要求被包含在所有定义的 VCP 代码中,除了 Digital Packet Video Link (DPVL) 支持组。 #### VCP 代码 VCP 代码是一组特定的指令,用于控制显示器的各种功能,包括亮度、对比度、色彩调整等。这些代码使得主机能够直接与显示器通信,实现对显示参数的精细控制。MCCS 标准中定义了一系列 VCP 代码,它们按照一定的格式和结构组织起来,以确保各种显示器之间的一致性和互操作性。 - **VCP Code C7h (Display Enable Key)**:最初设计用于控制显示器的开启/关闭功能,但由于未能达到预期效果,在此修订版中已被废弃。 - **VCP Code 13h (Backlight Control)**:用于控制显示器背光强度的功能,同样因未达到预期效果而在修订版中被废弃。 #### 向后兼容性 为了确保新版标准能够无缝地与先前版本兼容,修订版特别注意了以下几个方面: - 在引入新功能的同时,确保旧有功能的可用性。 - 对于被废弃的 VCP 代码,提供了明确的指导原则以避免混淆。 - 保持核心架构不变,只对必要部分进行修改。 #### 结论 VESA Monitor Control Command Set (MCCS) Standard Version 2 Revision 2 是一个重要的行业标准,它为显示器制造商和软件开发者提供了一套标准化的命令集,使得显示器控制更加统一和高效。通过不断改进和完善,该标准不仅增强了显示器的性能,还促进了行业的技术进步和发展。
2024-08-26 08:42:14 699KB VESA Monitor Command Standard
1
Command_WorkStation中文操作说明书
2023-12-24 22:44:04 2.08MB
1
骐骏模块 GSM 模块 AT指令集,指令手册参考。使用骐骏模块必备
2023-06-19 20:13:23 4.39MB 通信模块
1
版本21.13 更新日期Feb 2022 详细解释了Innovus中各指令和参数
2023-04-10 15:47:56 60.07MB Innovus P&R
1
PGP是世界顶级的加密软件,介绍如下: PGP Command Line 是一款加密工具,可加密大量的批处理信息、维护备份过程安全,用户能在自动运行脚本中插入PGP加密和数字签名功能,确保信息在传递、存储或备份过程中的安全。这是PGP的命令行工具.允许组织对秘密信息进行自动加密和签名。 PGP Command Line产品特性: 1.该产品为信息安全负责人员和IT管理员提供了广泛的功能。 2.编密码集成简单——利用脚本语言和选择工具,IT管理员可以将编密码和数字签名集成到批处理程序中。IT工作人员也可以利用他们当前的脚本工具,无需学习新的脚本或配置工具,就可以提供一个简单的途径,将编密码集成到构建好的批处理结构中。 3. 全面数据保护——通过在系统文件级进行加密,PGP Command Line不仅确保了数据的传输安全,同时还实现了在网络两端的安全保存。数据以加密形式保存,避免了未授权的信息访问。将PGP Command Line集成到批处理中,公司能够遵循团体的信息安全要求。 4.ADK技术——PGP Command Line确保全部信息加密为ADK,可以按照企业规则实现以后的复原。如果密钥丢失或不可用,或者需要访问加密数据时,公司可以通过ADK对信息解密并复原数据,这样就降低了数据损失概率。有些公司需要经常保护客户和自身信息,同时还要确保数据能够访问或检查,ADK功能就显得尤其重要。 5.标准方案——PGP Command Line同其他支持OpenPGP 和X.509密钥格式的产品无缝协作,同时支持PGP Keyserver和X.509 LDAP Directory协议。这就增加了企业的灵活性,允许企业根据自身的需求采取混合匹配的最佳方案,最大化其技术投资。 6.可信赖的PGP技术——所有PGP产品都是构建於PGP软件开发包(SDK)之上,提供了强有力的加密、数字签名等其他保密功能。PGP SDK 3.0.3已经获得FIPS 140-2证明。 7.公共源代码——PGP产品源代码公开可用,第三方可以验证标准的加密算法,来证实PGP产品的安全性。 这个注册机可以激活PGP Command Line 10.3.2 MP11
2023-04-04 17:40:46 731KB PGP KeyGen
1
命令行聊天室 使用多线程和 TCP、UDP 连接用 C++ 编写的 Linux 多房间聊天 与服务器的连接基于 tcp,在每个房间或私人聊天中,连接都是基于 UDP 的 P2P
2023-03-13 15:45:27 764KB C++
1
HUAWEI ME909u-521 LTE LGA Module AT Command Interface Specification LTE模块AT指令集
2023-03-01 15:54:52 3.05MB HAIWEI MU909 AT
1
SCSI Command Reference Manual By Seagate © 2017 Seagate Technology LLC. All rights reserved. Publication number: 100293068, Rev. K December 2017 Seagate, Seagate Technology and the Spiral logo are registered trademarks of Seagate Technology LLC in the United States and/or other countries. SeaTools is a trademarks of Seagate Technology LLC or one of its affiliated companies in the United States and/or other countries. All other trademarks or registered trademarks are the property of their respective owners. No part of this publication may be reproduced in any form without written permission of Seagate Technology LLC.
2023-02-16 16:18:14 4.74MB SCSI
1
这是一个利用prim中的command的小例子,很简单适合初学者,可以把在对象中的通过修改模板添加的按钮绑定command后,通过命令,把当前对象传递到后台处理。
2023-01-20 01:31:36 233KB wpf prism command
1