• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#命令模式(Command Pattern)实例教程

C#命令模式(Command Pattern)实例教程

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了command pattern,c#mysqlcommand,c#sqlcommandbuilder,c#command,c#commandtype等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文以实例形式讲述了C#命令模式的实现方法,分享给大家供大家参考。具体实现方法如下:

现假设想让遥控器控制电灯的开关、电视机的开关和切换,该如何做?

所有的开、关、切换都是遥控器发出的指令,把这些指令统一抽象成一个接口。

public interface IControl
{
    void Execute();
}

</div>

把电灯、电视机抽象成类。

public class Tv
{
    public void TurnOn()
    {
      Console.WriteLine("电视机打开了");
    }
    public void TurnOff()
    {
      Console.WriteLine("电视机关闭了");
    }
    public void SwitchChannel()
    {
      Console.WriteLine("电视机切换频道");
    }
}
public class Light
{
    public void TunrOn()
    {
      Console.WriteLine("电灯打开了");
    }
    public void TurnOff()
    {
      Console.WriteLine("电灯关闭了");
    }
}

</div>

Tv类的TurnOn(),TurnOff(),SwitchChannel(),Light类的TurnOn(),TurnOff(),这些方法都会通过执行IController的Execute方法被触发。把每一种动作抽象成类,并实现IControl接口。

public class LighOn : IControl
{
    private Light _light;
    public LighOn(Light light)
    {
      _light = light;
    }
    public void Execute()
    {
      _light.TunrOn();
    }
}
public class LightOff : IControl
{
    private Light _light;
    public LightOff(Light light)
    {
      _light = light;
    }
    public void Execute()
    {
      _light.TurnOff();
    }
}
public class TvOn : IControl
{
    private Tv _tv;
    public TvOn(Tv tv)
    {
      _tv = tv;
    }
    public void Execute()
    {
      _tv.TurnOn();
    }
}
public class TvOff : IControl
{
    private Tv _tv;
    public TvOff(Tv tv)
    {
      _tv = tv;
    }
    public void Execute()
    {
      _tv.TurnOff();
    }
}
public class TvSwitch : IControl
{
    private Tv _tv;
    public TvSwitch(Tv tv)
    {
      _tv = tv;
    }
    public void Execute()
    {
      _tv.SwitchChannel();
    }
}

</div>

现在,电视机和电灯有了,触发各种动作的类有了,遥控器该装下这些指令(提供装下指令的方法)并提供方法供客户端调用。

public class RemoteControl
{
    private IList<IControl> onCommands = new List<IControl>();
    private IList<IControl> offCommands = new List<IControl>();
    private IList<IControl> switchCommands = new List<IControl>();
    public void AddOnCommand(IControl control)
    {
      onCommands.Add(control);
    }
    public void AddOffCommand(IControl control)
    {
      offCommands.Add(control);
    }
    public void AddSwitchCommand(IControl control)
    {
      switchCommands.Add(control);
    }
    public void PressOnButton(int number)
    {
      onCommands[number].Execute();
    }
    public void PressOffButton(int number)
    {
      offCommands[number].Execute();
    }
    public void PressSwitchButton(int number)
    {
      switchCommands[number].Execute();
    }
}

</div>

客户端的执行逻辑大致是:把电视机、电灯准备好,把各种指令准备好,拿出遥控器把各种指令收纳其中,最后调用遥控器的方法执行各种指令。

class Program
{
    static void Main(string[] args)
    {
      //命令的接收方
      Light light = new Light();
      Tv tv = new Tv();
      //各种命令
      LighOn turnLightOn = new LighOn(light);
      LightOff turnLightOff = new LightOff(light);
      TvOn turnTvOn = new TvOn(tv);
      TvOff turnTvOff = new TvOff(tv);
      TvSwitch switchTv = new TvSwitch(tv);
      //RemoteConroller组装命令
      RemoteControl control = new RemoteControl();
      control.AddOnCommand(turnLightOn);
      control.AddOnCommand(turnTvOn);
      control.AddOffCommand(turnLightOff);
      control.AddOffCommand(turnTvOff);
      control.AddSwitchCommand(switchTv);
      control.PressOnButton(0);
      Console.ReadKey();
    }
}

</div>

总结:命令模式的需求源自想通过一个指令(比如这里IControl的Execute方法)来控制多个类的多个方法,包含了几个要素:

1、命令:让类的各种方法抽象成类实现一个接口
2、装配命令:把各种命令放到一个集合中
3、触发命令:提供方法调用命令集合中的某条命令,让其执行指令

相信本文所述对大家C#程序设计的学习有一定的帮助借鉴价值。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#命令模式(Command Pattern)实例教程

相关文章

  • 2017-05-28C#数字图象处理之肤色检测的方法
  • 2017-05-28在Framework 4.0中:找出新增的方法与新增的类(一)
  • 2017-05-28C# Entity Framework中的IQueryable和IQueryProvider详解
  • 2017-05-28C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
  • 2017-05-28简单掌握Windows中C#启动外部程序进程的方法
  • 2017-05-28winform实现关闭按钮失效的两种方法
  • 2017-05-28C#使用DropDownList绑定添加新数据的方法汇总
  • 2017-05-28C#生成不重复随机数列表实例
  • 2017-05-28遍历文件系统目录树的深入理解
  • 2017-05-28C#中的IDisposable模式用法详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C# 文件下载之断点续传实现代码
    • c#各种Timer类的区别与用法介绍
    • C# 调用Delphi dll 实例代码
    • C# 基础入门--关键字
    • C#.net实现在Winform中从internet下载文件的方法
    • C# Guid.NewGuid获得随机数
    • c# Form中的键盘响应具体实现思路
    • C#实现简单获取扫码枪信息代码
    • C#通过xpath查找xml指定元素的方法
    • C#实现在listview中插入图片实例代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有