扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
¡¡¡¡Òâͼ
¡¡¡¡½«¶ÔÏó×éºÏ³ÉÊ÷ÐνṹÒÔ±íʾ¡°²¿·Ö-ÕûÌ塱µÄ²ã´Î½á¹¹¡£CompositeģʽʹµÃÓû§¶Ôµ¥¸ö¶ÔÏóºÍ×éºÏ¶ÔÏóµÄʹÓþßÓÐÒ»ÖÂÐÔ¡£
¡¡¡¡³¡¾°
¡¡¡¡ÎÒÃÇÖªµÀ£¬Ò»¸öÍøÂçÓÎϷͨ³£»áÓжà¸öÓÎÏ·´óÇø¡£Ã¿Ò»¸öÓÎÏ·´óÇø»áÓкܶàÓÎÏ··þÎñÆ÷(Ò»¸öÓÎÏ·´óÇø¾ÍÊÇÒ»×éÓÎÏ··þÎñÆ÷)¡£Ã¿Ò»¸öÓÎÏ··þÎñÆ÷ÉÏ»áÓв»Í¬µÄ·þÎñ(¿ÉÒÔÊǶà¸ö·þÎñ)¡£ÕâÊÇÒ»¸öÃ÷ÏԵIJ¿·Ö-ÕûÌå¹Øϵ£¬¼ÙÉèÎÒÃÇÏÖÔÚÐèÒªÖÆ×÷Ò»¸ö·þÎñÆ÷¹ÜÀí¹¤¾ß£¬ÓÃÓÚÏÔʾËùÓдóÇø¡¢·þÎñÆ÷ÒÔ¼°·þÎñµÄÐÅÏ¢£¬²¢ÇÒÄÜ¿ªÆôÕâЩ·þÎñ(¿ÉÒÔÊǵ¥¶À¿ªÆôÒ»¸ö·þÎñ£¬Ò²¿ÉÒÔÊÇ¿ªÆôÕû¸ö·þÎñÆ÷ÉϵÄËùÓзþÎñ£¬Ò²¿ÉÒÔÊÇ¿ªÆôÕû¸ö´óÇøµÄËùÓзþÎñ)¡£
¡¡¡¡¿ÉÒÔ¿´µ½£¬ÓÎÏ··þÎñÆ÷ºÍÓÎÏ·´óÇø¶¼ÊÇÒ»¸ö×éºÏ¶ÔÏ󣬶øÓÎÏ··þÎñÊÇ×îµ×²ãµÄ½Úµã¡£¿Í»§¶ËÔÚ¿ªÆôÒ»¸öÓÎÏ·´óÇø·þÎñµÄʱºò£¬±ØÐëºÍÓÎÏ··þÎñÆ÷ÒÔ¼°ÓÎÏ··þÎñ½øÐÐÒÀÀµ£¬¶øÔÚ¿ªÆôÓÎÏ··þÎñÆ÷ÉÏËùÓзþÎñµÄʱºò£¬±ØÐëºÍÓÎÏ··þÎñ½øÐÐÒÀÀµ¡£ÊÔÏëһϣ¬Èç¹ûÒ»¸ö¹«Ë¾µÄ×ܲÃÔÚ¹ÜÀíÉϲ»µ«ÐèÒªºÍ¸÷×ܼàÒÔ¼°¾Àí½øÐйµÍ¨£¬»¹Óк͵ײãµÄÔ±¹¤¹µÍ¨£¬ÄÇô×ܲÃÊDz»ÊÇ»á̫æµÁËÒ»µã?ÓÉ´Ë£¬ÎÒÃÇÒýÈë×éºÏģʽ£¬Ê¹×éºÏ¶ÔÏóºÍµ¥¸ö¶ÔÏó¾ßÓÐÒ»ÑùµÄ±íÏÖÐÎʽ¡£
¡¡¡¡Ê¾Àý´úÂë
ÒÔÏÂÊÇÒýÓÃƬ¶Î£º ¡¡¡¡using System; ¡¡¡¡using System.Collections.Generic; ¡¡¡¡using System.Text; ¡¡¡¡namespace CompositeExample ¡¡¡¡{ ¡¡¡¡class Program ¡¡¡¡{ ¡¡¡¡static void Main(string[] args) ¡¡¡¡{ ¡¡¡¡Element server1 = new GameServer("GS1", "192.168.0.1"); ¡¡¡¡server1.Add(new GameService("Lobby1", 1, "S5Lobby1")); ¡¡¡¡server1.Add(new GameService("Gate1", 2, "S5Gate1")); ¡¡¡¡server1.Add(new GameService("DataExchange1", 3, "S5DataExchange1")); ¡¡¡¡server1.Add(new GameService("Rank1", 4, "S5Rank1")); ¡¡¡¡server1.Add(new GameService("Log1", 5, "S5Log1")); ¡¡¡¡Element server2 = new GameServer("GS2", "192.168.0.2"); ¡¡¡¡server2.Add(new GameService("Lobby2", 1, "S5Lobby2")); ¡¡¡¡server2.Add(new GameService("Gate2", 2, "S5Gate2")); ¡¡¡¡server2.Add(new GameService("DataExchange2", 3, "S5DataExchange1")); ¡¡¡¡server2.Add(new GameService("Rank2", 4, "S5Rank2")); ¡¡¡¡server2.Add(new GameService("Log2", 5, "S5Log2")); ¡¡¡¡Element area = new GameArea("µçÐÅÇø"); ¡¡¡¡area.Add(server1); ¡¡¡¡area.Add(server2); ¡¡¡¡area.Display(); ¡¡¡¡area.Start(); ¡¡¡¡area.Stop(); ¡¡¡¡} ¡¡¡¡} ¡¡¡¡abstract class Element ¡¡¡¡{ ¡¡¡¡protected string name; ¡¡¡¡public Element(string name) ¡¡¡¡{ ¡¡¡¡this.name = name; ¡¡¡¡} ¡¡¡¡public abstract void Add(Element element); ¡¡¡¡public abstract void Remove(Element element); ¡¡¡¡public abstract void Display(); ¡¡¡¡public abstract void Start(); ¡¡¡¡public abstract void Stop(); ¡¡¡¡} ¡¡¡¡class GameService : Element, IComparable ¡¡¡¡{ ¡¡¡¡private int serviceType; ¡¡¡¡private string serviceName; ¡¡¡¡public GameService(string name, int serviceType, string serviceName) ¡¡¡¡: base (name) ¡¡¡¡{ ¡¡¡¡this.serviceName = serviceName; ¡¡¡¡this.serviceType = serviceType; ¡¡¡¡} ¡¡¡¡public override void Add(Element element) ¡¡¡¡{ ¡¡¡¡throw new ApplicationException("xxx"); ¡¡¡¡} ¡¡¡¡public override void Remove(Element element) ¡¡¡¡{ ¡¡¡¡throw new ApplicationException("xxx"); ¡¡¡¡} ¡¡¡¡public override void Display() ¡¡¡¡{ ¡¡¡¡Console.WriteLine(string.Format("name:{0},serviceType:{1},serviceName:{2}", name, serviceType, serviceName)); ¡¡¡¡} ¡¡¡¡public override void Start() ¡¡¡¡{ ¡¡¡¡Console.WriteLine(string.Format("{0} started", name)); ¡¡¡¡} ¡¡¡¡public override void Stop() ¡¡¡¡{ ¡¡¡¡Console.WriteLine(string.Format("{0} stopped", name)); ¡¡¡¡} ¡¡¡¡public int CompareTo(GameService other) ¡¡¡¡{ ¡¡¡¡return other.serviceType.CompareTo(serviceType); ¡¡¡¡} ¡¡¡¡} ¡¡¡¡class GameServer : Element ¡¡¡¡{ ¡¡¡¡private string serverIP; ¡¡¡¡private List serviceList = new List(); ¡¡¡¡public GameServer(string name, string serverIP) ¡¡¡¡: base(name) ¡¡¡¡{ ¡¡¡¡this.serverIP = serverIP; ¡¡¡¡} |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者