IronMan之命令
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!專注中小微企業(yè)官網(wǎng)定制,網(wǎng)站制作、網(wǎng)站建設(shè),塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。在本篇中還是圍繞著“IronMan”來講,在上一篇“外觀”中我們說到過“控制中心”。它是負(fù)責(zé)IronMan的核心,所有能想象到的功能都跟它有關(guān)系,
就在使用它的時(shí)候,發(fā)現(xiàn)了一些問題,比如使用它來命令部件做一些操作:
1 ///2 /// 控制中心 3 /// 4 public class CenterController 5 { 6 public void Attact() 7 { 8 ComponteCase comCase = new ComponteCase(); 9 comCase.Attact(); 10 } 11 } 12 ///13 /// 部件 14 /// 15 public class ComponteCase 16 { 17 public void Attact() 18 { 19 Console.WriteLine("示例部件***1"); 20 } 21 }
從
從上面的“控制中心”中可以看出,它是直接使用的部件,如果這時(shí)候要添加、修改或者刪除部件的***方式,那么“控制中心”也要跟著做出修改。 耦合度很大,那怎么樣要使“控制中心”和“部件”之間變得是松耦合呢?
命令模式的定義:將一組行為抽象為對(duì)象,實(shí)現(xiàn)二者之間的松耦合。
1 ///2 /// 抽象命令 3 /// 4 public abstract class Command 5 { 6 public abstract void Execute(); 7 } 8 ///9 /// 具體命令類(示例部件***命令) 10 /// 11 public class RealizeCommand : Command 12 { 13 private ComponteCase compontecase = new ComponteCase(); 14 public override void Execute() 15 { 16 //業(yè)務(wù)操作等等 17 compontecase.Attact(); 18 } 19 }
添加了抽象命令類和具體命令類,具體命令類已經(jīng)代表了一個(gè)命令,就是示例部件***:
1 CenterController centercontroller = new CenterController(new RealizeCommand()); 2 centercontroller.Attact();
也可以再新建其它的具體命令類,引用其它部件,使用其***方法,這樣便實(shí)現(xiàn)了動(dòng)態(tài)注入,把控制中心和部件
從緊耦合狀態(tài)改變到了松耦合。
這里會(huì)有人有疑問了,如果要執(zhí)行多個(gè)命令怎么辦?
1 ///2 /// 命令板 3 /// 4 public class CommandList 5 { 6 private Listcommands = new List (); 7 public CommandList() { } 8 public CommandList(Command command)//動(dòng)態(tài)注入 9 { 10 commands.Add(command); 11 } 12 public void AddCommand(Command command) 13 { 14 commands.Add(command); 15 } 16 public void RemoveCommand(Command command) 17 { 18 commands.Remove(command); 19 } 20 public void Execute() 21 { 22 foreach (Command command in commands) 23 { 24 command.Execute(); 25 } 26 } 27 }
添加一個(gè)命令板類,再修改一下控制中心,使得“控制中心”和“抽象命令”間都進(jìn)行消耦,下面再看一下修改后的“控制中心”:
1 ///2 /// 命令板 3 /// 4 public class CommandList 5 { 6 private Listcommands = new List (); 7 public CommandList() { } 8 public CommandList(Command command)//動(dòng)態(tài)注入 9 { 10 commands.Add(command); 11 } 12 public void AddCommand(Command command) 13 { 14 commands.Add(command); 15 } 16 public void RemoveCommand(Command command) 17 { 18 commands.Remove(command); 19 } 20 public void Execute() 21 { 22 foreach (Command command in commands) 23 { 24 command.Execute(); 25 } 26 } 27 }
使用的方式還是和上一個(gè)方式相同,只是上個(gè)方式是把命令動(dòng)態(tài)注入,現(xiàn)在修改成了把命令板動(dòng)態(tài)注入。
命令模式就到這里了。。END
下一篇實(shí)現(xiàn)更佳的可擴(kuò)展的命令模式
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。