您好,登錄后才能下訂單哦!
小編給大家分享一下C#設(shè)計(jì)模式之Mediator中介者模式如何解決程序員的七夕緣分問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
具體如下:
一、理論定義
中介者模式 定義了一種一對多的操作,解脫了對象之間多對多的引用依賴,所有對象之間的通信,都封裝在 中介者里面。
二、應(yīng)用舉例
需求描述: 七夕來啦,誰說程序員就一定 是單身苦逼呢,程序員也有自己的幸福。
也在追尋自己的緣分,我們都是有理想,有文化,有獨(dú)立見解的群體,
我們?yōu)?信息社會(huì)所做的努力,能給我們七夕帶來好運(yùn)。告別單身,開始行動(dòng)啦!
1.三個(gè)程序員 找到了 緣分"YuanFen"大師,希望找到自己另一半,
2.六個(gè)美女: 劉詩詩,蔣琴琴,白富美,朱莉,舒淇,語嫣 也找到 緣分"YuanFen" 大師,
希望心中的 白馬王子能給自己一注目光。
3.緣分大師 接受了程序員 和 美女的請求。
4.開始緣分派對啦!
三、具體編碼
1.美女們(Grils)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Com.Design.Gof.Mediator { public class Girls { /// <summary> /// 美女名字 /// </summary> public string Name { get; set; } /// <summary> /// 找了一個(gè)叫“緣分” 的中介者 做媒婆 /// </summary> public YuanFen YuanFen { get; set; } /// <summary> /// 向自己心目中的 白馬王子發(fā)信 /// </summary> /// <param name="name_message">名字和信息</param> public void SendMessage(Dictionary<string,string> name_message) { YuanFen.SendToBoys(name_message); } /// <summary> /// 收到某個(gè)白馬王子回信 /// </summary> public void RecieveMessage(string msg) { Console.WriteLine(msg); } } }
2. 帥哥程序員
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Com.Design.Gof.Mediator { /// <summary> /// 帥哥 1 /// </summary> public class Boys { /// <summary> /// 帥哥名字 /// </summary> public string Name { get; set; } /// <summary> /// 找了一個(gè)叫“緣分” 的中介者 做媒婆 /// </summary> public YuanFen YuanFen { get; set; } /// <summary> ///向自己心目中的 白雪公主發(fā)信 /// </summary> /// <param name="name_message">名字和信息</param> public void SendMessage(Dictionary<string, string> name_message) { YuanFen.SendToGrils(name_message); } /// <summary> /// 收到某個(gè)白雪公主回信 /// </summary> public void RecieveMessage(string msg) { Console.WriteLine(msg); } } }
3.緣分
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Com.Design.Gof.Mediator { public class YuanFen { public List<Girls> Girls { get; set; } public List<Boys> Boys { get; set; } /// <summary> /// 男孩向女孩發(fā)信 /// </summary> /// <param name="name_message"></param> public void SendToGrils(Dictionary<string, string> name_message) { foreach (var k in name_message) { foreach (var girl in Girls) { if (k.Key == girl.Name) { girl.RecieveMessage(k.Value); } } } } /// <summary> /// 女孩向男孩發(fā)信 /// </summary> /// <param name="name_message"></param> public void SendToBoys(Dictionary<string, string> name_message) { foreach (var k in name_message) { foreach (var boy in Boys) { if (k.Key == boy.Name) { boy.RecieveMessage(k.Value); } } } } } }
4.主函數(shù)(派對,發(fā)情書)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Com.Design.Gof.Mediator; namespace Com.Design.Gof.Test { class Program { static void Main(string[] args) { //緣分 這個(gè) 媒婆來了 YuanFen yuanFen = new YuanFen { Boys=new List<Boys>(), Girls=new List<Girls>()}; //男孩子們?nèi)杠S報(bào)名啊 Boys boy1 = new Boys { Name="程序員1", YuanFen=yuanFen}; Boys boy2 = new Boys { Name = "程序員2", YuanFen = yuanFen }; Boys boy3 = new Boys { Name = "程序員3", YuanFen = yuanFen }; //緣分接受了男孩子的夙愿 yuanFen.Boys.Add(boy1); yuanFen.Boys.Add(boy2); yuanFen.Boys.Add(boy3); //女孩子也很積極 Girls girls1 = new Girls { Name="劉詩詩", YuanFen=yuanFen}; Girls girls2 = new Girls { Name = "白富美", YuanFen = yuanFen }; Girls girls3 = new Girls { Name = "蔣琴琴", YuanFen = yuanFen }; Girls girls4 = new Girls { Name = "舒淇", YuanFen = yuanFen }; Girls girls5 = new Girls { Name = "朱莉", YuanFen = yuanFen }; Girls girls6 = new Girls { Name = "語嫣", YuanFen = yuanFen }; //緣分接受了美女們的愛情 丘比特 yuanFen.Girls.Add(girls1); yuanFen.Girls.Add(girls2); yuanFen.Girls.Add(girls3); yuanFen.Girls.Add(girls4); yuanFen.Girls.Add(girls5); yuanFen.Girls.Add(girls6); //開始派對啦 //程序員1 對 劉詩詩,蔣琴琴 感興趣 Dictionary<string, string> name_message = new Dictionary<string, string>(); name_message.Add("劉詩詩", boy1.Name + " 對劉詩詩說: 詩詩詩詩 我愛你,就像老鼠愛大米"); name_message.Add("蔣琴琴", boy1.Name + " 對蔣琴琴說: 我希望每天睡前最后看到的人是你...... "); boy1.SendMessage(name_message); name_message.Clear(); Console.WriteLine(); //程序員2 對 劉詩詩,朱莉,舒淇 感興趣 name_message.Add("語嫣", boy2.Name + " 對語嫣說: 地球仍然轉(zhuǎn)動(dòng),世界依舊善變,而我永遠(yuǎn)愛你"); name_message.Add("朱莉", boy2.Name + " 對朱莉說: 每天都 ...很想妳... "); name_message.Add("舒淇", boy2.Name + " 對舒淇說: 曾經(jīng)迷惘的心中,是你牽引我走出寂寞 "); boy2.SendMessage(name_message); name_message.Clear(); Console.WriteLine(); //語嫣 對三個(gè)程序員都感興趣 name_message.Add("程序員1", girls6.Name + " 對程序員1說: 想想和我一起看日升日落的喜悅吧!...嘻嘻"); name_message.Add("程序員2", girls6.Name + " 對程序員2說: 我的世界只有你懂.... "); name_message.Add("程序員3", girls6.Name + " 對程序員3說: 因?yàn)橹啦荒軟]有你,所以會(huì)更珍惜 "); girls6.SendMessage(name_message); name_message.Clear(); Console.WriteLine(); //蔣琴琴 很鐘情,很專一,只給程序員1 發(fā)信 name_message.Add("程序員1", girls3.Name + " 對程序員1說: 愛你一生伴你一世,你的心跳只有我聽得到"); girls3.SendMessage(name_message); Console.ReadKey(); } } }
5.運(yùn)行結(jié)果
以上是“C#設(shè)計(jì)模式之Mediator中介者模式如何解決程序員的七夕緣分問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。