亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

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

2020-01-24 02:25:23
字體:
來源:轉載
供稿:網友

本文以實例形式講述了C#命令模式的實現方法,分享給大家供大家參考。具體實現方法如下:

現假設想讓遙控器控制電燈的開關、電視機的開關和切換,該如何做?

所有的開、關、切換都是遙控器發出的指令,把這些指令統一抽象成一個接口。

public interface IControl{    void Execute();}

把電燈、電視機抽象成類。

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("電燈關閉了");    }}

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();    }}

現在,電視機和電燈有了,觸發各種動作的類有了,遙控器該裝下這些指令(提供裝下指令的方法)并提供方法供客戶端調用。

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();    }}

客戶端的執行邏輯大致是:把電視機、電燈準備好,把各種指令準備好,拿出遙控器把各種指令收納其中,最后調用遙控器的方法執行各種指令。

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();    }}

總結命令模式的需求源自想通過一個指令(比如這里IControl的Execute方法)來控制多個類的多個方法,包含了幾個要素:

1、命令:讓類的各種方法抽象成類實現一個接口
2、裝配命令:把各種命令放到一個集合中
3、觸發命令:提供方法調用命令集合中的某條命令,讓其執行指令

相信本文所述對大家C#程序設計的學習有一定的幫助借鑒價值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久精品999| 91精品国产91久久久久久吃药| 国产精品第100页| 欧美日在线观看| 成人黄色片网站| 91av在线网站| 亚洲人成电影在线观看天堂色| 久久精品欧美视频| 日韩欧美在线视频观看| 日韩亚洲欧美中文高清在线| 精品国产电影一区| 日韩成人在线播放| 精品国产91久久久久久老师| 亚洲一区二区在线播放| 亚洲图片在线综合| 国内成人精品一区| 日韩电视剧免费观看网站| 日韩视频中文字幕| 欧美老女人性视频| 中文字幕av一区中文字幕天堂| 久久精品国产免费观看| 亚洲国产精品久久久久久| 奇米成人av国产一区二区三区| 亚州国产精品久久久| 久久精品国产一区二区电影| 国产成人在线亚洲欧美| 亚洲欧美激情视频| www.日韩不卡电影av| 成人精品在线视频| 秋霞午夜一区二区| 日韩中文第一页| 日韩禁在线播放| 欧美裸体男粗大视频在线观看| 欧美大人香蕉在线| 国产精品成人观看视频国产奇米| 国产亚洲欧洲在线| 欧美人成在线视频| 国产精品久久久久久五月尺| 欧美夫妻性视频| 国外成人在线直播| 国产精品一区二区三区成人| 久久久久久免费精品| 国产91对白在线播放| 国产91精品黑色丝袜高跟鞋| 亚洲永久免费观看| 欧美日韩在线视频一区二区| 九九热这里只有精品免费看| 国产偷国产偷亚洲清高网站| 国产成人高清激情视频在线观看| 国产成人+综合亚洲+天堂| 91精品久久久久久久久中文字幕| 三级精品视频久久久久| 国产不卡一区二区在线播放| 亚洲第一福利在线观看| 欧美华人在线视频| 精品激情国产视频| 国产97色在线|日韩| 亚洲成人久久电影| 国产91精品在线播放| 久久久久中文字幕2018| 国产精品电影观看| 欧美大片va欧美在线播放| 日韩网站免费观看| 午夜免费在线观看精品视频| 亚洲美女视频网站| 在线观看日韩视频| 欧美怡红院视频一区二区三区| 亚洲精品国产成人| 亚洲精品美女免费| 久久亚洲欧美日韩精品专区| 亚洲国产精品电影在线观看| 国产精品老牛影院在线观看| 午夜美女久久久久爽久久| 青青草国产精品一区二区| 亚洲一二三在线| 日韩精品999| 日韩毛片在线看| 欧洲s码亚洲m码精品一区| 国产日韩中文在线| 亚洲天堂成人在线视频| 亚洲sss综合天堂久久| 在线日韩日本国产亚洲| 国产91色在线免费| 成人午夜激情免费视频| 国产精品成人免费电影| 91精品久久久久久| 中文字幕日韩综合av| 亚洲欧美激情另类校园| 色妞色视频一区二区三区四区| 久久久久免费精品国产| 久久精品99无色码中文字幕| 久久久久国产视频| 亚洲精品天天看| 亚洲午夜国产成人av电影男同| 亚洲欧美日韩天堂一区二区| 欧美黄色片免费观看| 亚洲欧美一区二区三区四区| 欧美日韩中文字幕综合视频| 国产69精品99久久久久久宅男| 日韩理论片久久| 欧美精品激情视频| 第一福利永久视频精品| 欧美尤物巨大精品爽| 中文字幕不卡在线视频极品| 91在线观看免费高清| 97成人精品区在线播放| 久久久久在线观看| 日韩中文字幕不卡视频| 欧美精品videossex性护士| 欧美日韩成人精品| 国产亚洲精品91在线| 国产精品成人一区二区| 亚洲欧美国产一本综合首页| 国产精品福利久久久| 丰满岳妇乱一区二区三区| 91网站在线看| 91免费观看网站| 亚洲国产另类久久精品| 91亚洲精品久久久| 日韩久久精品成人| 国产+人+亚洲| 欧美日韩xxx| 日韩视频免费观看| 性色av一区二区三区| 中文字幕日韩欧美在线| 精品国偷自产在线视频99| 亚洲午夜未删减在线观看| 亚洲国产一区二区三区四区| 中文字幕一区二区精品| 久久久久久久久国产精品| 日韩免费观看av| 国产精品视频自在线| 亚洲人成自拍网站| 亚洲一区二区三区四区在线播放| 黄色成人在线播放| 久久精品99久久香蕉国产色戒| 97视频在线观看视频免费视频| 精品高清一区二区三区| 欧美老女人性生活| 日韩视频精品在线| 日韩激情av在线免费观看| 不卡在线观看电视剧完整版| 日本91av在线播放| 亚洲天堂免费在线| 久久精品久久久久久| 欧美小视频在线观看| 日韩成人av一区| 欧美日韩午夜视频在线观看| 91精品视频免费| 国产精品直播网红| 国产美女精彩久久| 亚洲天堂成人在线视频| 久久精品国产一区| 国产精品亚发布| 国产精品视频久久久| 成人激情在线播放| 亚洲自拍中文字幕| 欧美极品美女视频网站在线观看免费| 亚洲欧洲成视频免费观看| 欧美噜噜久久久xxx| 亚洲视频电影图片偷拍一区| 精品国产乱码久久久久久婷婷| 日韩精品黄色网| 91精品国产综合久久香蕉的用户体验|