bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

C#設計模式之命令-創新互聯

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。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設