IronMan之命令
創新互聯網站建設公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務為基礎,以質量求生存,以技術求發展,成交一個客戶多一個朋友!專注中小微企業官網定制,網站制作、網站建設,塑造企業網絡形象打造互聯網企業效應。在本篇中還是圍繞著“IronMan”來講,在上一篇“外觀”中我們說到過“控制中心”。它是負責IronMan的核心,所有能想象到的功能都跟它有關系,
就在使用它的時候,發現了一些問題,比如使用它來命令部件做一些操作:
1 /// <summary> 2 /// 控制中心 3 /// </summary> 4 public class CenterController 5 { 6 public void Attact() 7 { 8 ComponteCase comCase = new ComponteCase(); 9 comCase.Attact(); 10 } 11 } 12 /// <summary> 13 /// 部件 14 /// </summary> 15 public class ComponteCase 16 { 17 public void Attact() 18 { 19 Console.WriteLine("示例部件***1"); 20 } 21 }
從
從上面的“控制中心”中可以看出,它是直接使用的部件,如果這時候要添加、修改或者刪除部件的***方式,那么“控制中心”也要跟著做出修改。 耦合度很大,那怎么樣要使“控制中心”和“部件”之間變得是松耦合呢?
命令模式的定義:將一組行為抽象為對象,實現二者之間的松耦合。
1 /// <summary> 2 /// 抽象命令 3 /// </summary> 4 public abstract class Command 5 { 6 public abstract void Execute(); 7 } 8 /// <summary> 9 /// 具體命令類(示例部件***命令) 10 /// </summary> 11 public class RealizeCommand : Command 12 { 13 private ComponteCase compontecase = new ComponteCase(); 14 public override void Execute() 15 { 16 //業務操作等等 17 compontecase.Attact(); 18 } 19 }
添加了抽象命令類和具體命令類,具體命令類已經代表了一個命令,就是示例部件***:
1 CenterController centercontroller = new CenterController(new RealizeCommand()); 2 centercontroller.Attact();
也可以再新建其它的具體命令類,引用其它部件,使用其***方法,這樣便實現了動態注入,把控制中心和部件
從緊耦合狀態改變到了松耦合。
這里會有人有疑問了,如果要執行多個命令怎么辦?
1 /// <summary> 2 /// 命令板 3 /// </summary> 4 public class CommandList 5 { 6 private List<Command> commands = new List<Command>(); 7 public CommandList() { } 8 public CommandList(Command command)//動態注入 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 }
添加一個命令板類,再修改一下控制中心,使得“控制中心”和“抽象命令”間都進行消耦,下面再看一下修改后的“控制中心”:
1 /// <summary> 2 /// 命令板 3 /// </summary> 4 public class CommandList 5 { 6 private List<Command> commands = new List<Command>(); 7 public CommandList() { } 8 public CommandList(Command command)//動態注入 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 }
使用的方式還是和上一個方式相同,只是上個方式是把命令動態注入,現在修改成了把命令板動態注入。
命令模式就到這里了。。END
下一篇實現更佳的可擴展的命令模式
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網站題目:C#設計模式之命令-創新互聯
標題鏈接:http://vcdvsql.cn/article28/iejcp.html
成都網站建設公司_創新互聯,為您提供網站導航、ChatGPT、搜索引擎優化、網站設計公司、用戶體驗、品牌網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯