真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

.NET簡談設(shè)計(jì)模式之(命令模式)

我們繼續(xù)學(xué)習(xí)設(shè)計(jì)模式系列文章。

在監(jiān)利等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,營銷型網(wǎng)站,成都外貿(mào)網(wǎng)站制作,監(jiān)利網(wǎng)站建設(shè)費(fèi)用合理。

本篇要講的是命令模式,其實(shí)命令模式也比較好理解,沒有用到多高深的技術(shù),也不需要多復(fù)雜的抽象。只需要我們腦海里能有一個(gè)大概的原型,等我們遇見類似問題的時(shí)候我們能通過巧妙的方式來解決。我們做應(yīng)用層開發(fā)的大部分接觸的都是一些模式、框架、思想等等,不像搞低層開發(fā)的,他們研究的可能多數(shù)是一些技術(shù)實(shí)現(xiàn)的問題,而我們是學(xué)習(xí)實(shí)現(xiàn)的方法論。應(yīng)用層開發(fā)在技術(shù)的復(fù)雜程度上是有限的,在組合技術(shù)的實(shí)現(xiàn)上是復(fù)雜的。所以有一些.NET架構(gòu)師確實(shí)比較厲害,他們能很早的就料到會(huì)出現(xiàn)什么問題,他們有很強(qiáng)的架構(gòu)思想,對設(shè)計(jì)模式的掌握、對架構(gòu)設(shè)計(jì)思想、對敏捷、極限等等都有了解,將它們化為一體,才能設(shè)計(jì)出非常漂亮的開發(fā)架構(gòu)。[王清培版權(quán)所有,轉(zhuǎn)載請給出署名]

[NET架構(gòu)師也是我們每一個(gè)NET程序員夢寐以求的歸屬,我們向著這個(gè)目標(biāo)努力吧。加油!]

命令模式:將調(diào)用封裝成命令對象,通過命令對象進(jìn)行調(diào)用,很好的消除調(diào)用者與被調(diào)用者之間的耦合。

這是我對命令模式的理解,定義有很多種,側(cè)重點(diǎn)不同,理解就行了。我們引入問題,帶著問題來學(xué)習(xí)模式能很好的“消化吸收”。

現(xiàn)在移動(dòng)終端越來越流行,IPAD、IPHONE、家用設(shè)備等等,這是計(jì)算機(jī)發(fā)展的一種趨勢,更是人類生活質(zhì)量的重大提升,有了計(jì)算機(jī)所有的東西都是信息化、數(shù)字化、科技化,不用出門都能買東西,不用到家都能自動(dòng)打開熱水器燒水,不用動(dòng)手都能吃到飯??磥砦覀冞x擇軟件開發(fā)是沒錯(cuò)的,至少我們能改善自己的生活環(huán)境。

我們來改善一下我們自己的家庭環(huán)境,使用全數(shù)字化,用一個(gè)移動(dòng)終端來控制家里的所有的電子設(shè)備,比如微波爐、熱水器、電視機(jī)、冰箱等等。只要是智能設(shè)備我們都能控制。

[軟件是對硬件編程,使用軟件來編寫硬件處理邏輯]

我們假設(shè)這個(gè)終端設(shè)備叫做家庭設(shè)備控制中心,我們要開發(fā)一個(gè)這樣的設(shè)備來對所有的這些家用電器進(jìn)行控制,但是這些家用電子各種各樣,不管是從造型上還是內(nèi)部實(shí)現(xiàn)上都有千差萬別,想要用這個(gè)終端進(jìn)行統(tǒng)一的控制似乎不太容易。這個(gè)終端不是死的,家用電子可能會(huì)隨著時(shí)間的長久而損壞,當(dāng)我們更換新的家用電器時(shí),我們的終端要能一樣工作,只需要簡單的配置一下就能控制新的電器。[王清培版權(quán)所有,轉(zhuǎn)載請給出署名]

所以這里引入了兩個(gè)問題,第一個(gè)是控制終端不能隨著家用電器的變化而改動(dòng),第二個(gè)是不可能每個(gè)家用電器都按照終端的規(guī)定進(jìn)行制造。我們需要有一種辦法來解決這矛盾的局面。救命稻草來了,我們可以運(yùn)用“命令模式”的思想來解決這種矛盾的局面。

我們先來看一個(gè)命令模式的大概流程圖。

1:

.NET簡談設(shè)計(jì)模式之(命令模式)

在這種情況下,調(diào)用者與被調(diào)用者都不需要改動(dòng),只需要在這兩者之間加上命令對象來傳達(dá)這種調(diào)用者吩咐的命令就行了。

家用終端可能有多個(gè)按鈕,每個(gè)按鈕控制不同的電器,我們只需要將上圖的原理帶入到終端中就行了。

2:

.NET簡談設(shè)計(jì)模式之(命令模式)

這樣就可以用一個(gè)遙控器來控制任意的電器設(shè)備了。我們來看看代碼是怎么實(shí)現(xiàn)的,當(dāng)然實(shí)現(xiàn)的方式有很多種,每種各有優(yōu)缺點(diǎn),本篇文章以入門為主。

電視機(jī)代碼:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace ConsoleApplication1  
  6. {  
  7.     ///  
  8.     /// 電視機(jī) 
  9.     ///  
  10.     public class Television  
  11.     {  
  12.         ///  
  13.         /// 模式是關(guān)閉的 
  14.         ///  
  15.         bool isopen = false;  
  16.         ///  
  17.         /// 切換關(guān)閉、打開 
  18.         ///  
  19.         public string Switch()  
  20.         {  
  21.             if (isopen)  
  22.             {  
  23.                 isopen = false;  
  24.                 return "關(guān)閉電視機(jī)";  
  25.             }  
  26.             else 
  27.             {  
  28.                 isopen = true;  
  29.                 return "打開電視機(jī)";  
  30.  
  31.             }  
  32.         }  
  33.  
  34.     }  
  35. }  

電視機(jī)命令對象代碼:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace ConsoleApplication1  
  6. {  
  7.     ///  
  8.     /// 電視機(jī)命令對象 
  9.     ///  
  10.     public class TeleisionCommand : CommandInterface  
  11.     {  
  12.         ///  
  13.         /// 電視機(jī)對象 
  14.         ///  
  15.         private Television Tv = new Television(); 
  16.         #region CommandInterface 成員 
  17.         ///  
  18.         /// 執(zhí)行命令 
  19.         ///  
  20.         public string Execute()  
  21.         {  
  22.             return Tv.Switch();  
  23.         } 
  24.  
  25.         #endregion 
  26.     }  
  27. }  

命令接口代碼:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace ConsoleApplication1  
  6. {  
  7.     ///  
  8.     /// 命令接口 
  9.     ///  
  10.     public interface CommandInterface  
  11.     {  
  12.         ///  
  13.         /// 執(zhí)行命令 
  14.         ///  
  15.         string Execute();  
  16.     }  
  17. }  

控制中心代碼:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace ConsoleApplication1  
  6. {  
  7.     ///  
  8.     /// 控制中心 
  9.     ///  
  10.     public static class ControlContent  
  11.     {  
  12.         private static CommandInterface Command;  
  13.         public static void SetControlObjectCommand(CommandInterface cobject)  
  14.         {  
  15.             Command = cobject;  
  16.         }  
  17.         public static string ExecuteControlObject()  
  18.         {  
  19.             return Command.Execute();  
  20.         }  
  21.     }  
  22. }  

模擬代碼:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace ConsoleApplication1  
  6. {  
  7.     class Program  
  8.     {  
  9.         static void Main(string[] args)  
  10.         {  
  11.             TeleisionCommand tvcommand = new TeleisionCommand();  
  12.  
  13.             ControlContent.SetControlObjectCommand(tvcommand);  
  14.             Console.WriteLine(ControlContent.ExecuteControlObject());  
  15.             Console.ReadLine();  
  16.         }  
  17.     }  
  18. }  

總結(jié):命令模式就講完了,大概的理論就是在中間架設(shè)一個(gè)命令對象將調(diào)用者與被調(diào)用者分離開來,解決兩者之間的耦合。


新聞名稱:.NET簡談設(shè)計(jì)模式之(命令模式)
地址分享:http://weahome.cn/article/pdojic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部