C#設(shè)計(jì)模式之Mediator中介者模式解決程序員的七夕緣分問(wèn)題示例
本文實(shí)例講述了C#設(shè)計(jì)模式之Mediator中介者模式解決程序員的七夕緣分問(wèn)題。分享給大家供大家參考,具體如下:
一、理論定義
中介者模式 定義了一種一對(duì)多的操作,解脫了對(duì)象之間多對(duì)多的引用依賴,所有對(duì)象之間的通信,都封裝在 中介者里面。
二、應(yīng)用舉例
需求描述: 七夕來(lái)啦,誰(shuí)說(shuō)程序員就一定 是單身苦逼呢,程序員也有自己的幸福。
也在追尋自己的緣分,我們都是有理想,有文化,有獨(dú)立見(jiàn)解的群體,
我們?yōu)?信息社會(huì)所做的努力,能給我們七夕帶來(lái)好運(yùn)。告別單身,開(kāi)始行動(dòng)啦!
1.三個(gè)程序員 找到了 緣分"YuanFen"大師,希望找到自己另一半,
2.六個(gè)美女: 劉詩(shī)詩(shī),蔣琴琴,白富美,朱莉,舒淇,語(yǔ)嫣 也找到 緣分"YuanFen" 大師,
希望心中的 白馬王子能給自己一注目光。
3.緣分大師 接受了程序員 和 美女的請(qǐng)求。
4.開(kāi)始緣分派對(duì)啦!
三、具體編碼
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ù)(派對(duì),發(fā)情書(shū))
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è) 媒婆來(lái)了 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="劉詩(shī)詩(shī)", 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 = "語(yǔ)嫣", YuanFen = yuanFen }; //緣分接受了美女們的愛(ài)情 丘比特 yuanFen.Girls.Add(girls1); yuanFen.Girls.Add(girls2); yuanFen.Girls.Add(girls3); yuanFen.Girls.Add(girls4); yuanFen.Girls.Add(girls5); yuanFen.Girls.Add(girls6); //開(kāi)始派對(duì)啦 //程序員1 對(duì) 劉詩(shī)詩(shī),蔣琴琴 感興趣 Dictionary<string, string> name_message = new Dictionary<string, string>(); name_message.Add("劉詩(shī)詩(shī)", boy1.Name + " 對(duì)劉詩(shī)詩(shī)說(shuō): 詩(shī)詩(shī)詩(shī)詩(shī) 我愛(ài)你,就像老鼠愛(ài)大米"); name_message.Add("蔣琴琴", boy1.Name + " 對(duì)蔣琴琴說(shuō): 我希望每天睡前最后看到的人是你...... "); boy1.SendMessage(name_message); name_message.Clear(); Console.WriteLine(); //程序員2 對(duì) 劉詩(shī)詩(shī),朱莉,舒淇 感興趣 name_message.Add("語(yǔ)嫣", boy2.Name + " 對(duì)語(yǔ)嫣說(shuō): 地球仍然轉(zhuǎn)動(dòng),世界依舊善變,而我永遠(yuǎn)愛(ài)你"); name_message.Add("朱莉", boy2.Name + " 對(duì)朱莉說(shuō): 每天都 ...很想妳... "); name_message.Add("舒淇", boy2.Name + " 對(duì)舒淇說(shuō): 曾經(jīng)迷惘的心中,是你牽引我走出寂寞 "); boy2.SendMessage(name_message); name_message.Clear(); Console.WriteLine(); //語(yǔ)嫣 對(duì)三個(gè)程序員都感興趣 name_message.Add("程序員1", girls6.Name + " 對(duì)程序員1說(shuō): 想想和我一起看日升日落的喜悅吧!...嘻嘻"); name_message.Add("程序員2", girls6.Name + " 對(duì)程序員2說(shuō): 我的世界只有你懂.... "); name_message.Add("程序員3", girls6.Name + " 對(duì)程序員3說(shuō): 因?yàn)橹啦荒軟](méi)有你,所以會(huì)更珍惜 "); girls6.SendMessage(name_message); name_message.Clear(); Console.WriteLine(); //蔣琴琴 很鐘情,很專一,只給程序員1 發(fā)信 name_message.Add("程序員1", girls3.Name + " 對(duì)程序員1說(shuō): 愛(ài)你一生伴你一世,你的心跳只有我聽(tīng)得到"); girls3.SendMessage(name_message); Console.ReadKey(); } } }
5.運(yùn)行結(jié)果
6.總結(jié)
七夕來(lái)了,找回自己的緣分。
附:完整實(shí)例代碼點(diǎn)擊此處本站下載。
更多關(guān)于C#相關(guān)內(nèi)容還可查看本站專題:《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#窗體操作技巧匯總》、《C#常見(jiàn)控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)組操作技巧總結(jié)》及《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》
希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。
上一篇:C#基礎(chǔ)學(xué)習(xí)系列之Attribute和反射詳解
欄 目:C#教程
下一篇:C# 以MDF文件鏈接數(shù)據(jù)庫(kù)的示例代碼
本文標(biāo)題:C#設(shè)計(jì)模式之Mediator中介者模式解決程序員的七夕緣分問(wèn)題示例
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5491.html
您可能感興趣的文章
- 01-10深入淺出23種設(shè)計(jì)模式
- 01-10C#一個(gè)簡(jiǎn)單的定時(shí)小程序?qū)崿F(xiàn)代碼
- 01-10微信開(kāi)放平臺(tái)之網(wǎng)站授權(quán)微信登錄功能
- 01-10C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量二
- 01-10C#編程自學(xué)之開(kāi)篇介紹
- 01-10C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量三
- 01-10C#編程自學(xué)之運(yùn)算符和表達(dá)式
- 01-10C#編程自學(xué)之類和對(duì)象
- 01-10C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量一
- 01-10C#編程自學(xué)之流程控制語(yǔ)句


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫(xiě)Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)