C#設計模式系列 5 —-Mediator 中介者模式 之 程式員的七夕緣分

來源:互聯網
上載者:User

 1.理論定義

       中介者模式  定義了一種一對多的操作,解脫了對象之間多對多的引用依賴,所有對象之間的通訊,都封裝在 中介者裡面。

   2.應用舉例

          需求描述: 七夕來啦,誰說程式員就一定 是單身苦逼呢,程式員也有自己的幸福。

                         也在追尋自己的緣分,我們都是有理想,有文化,有獨立見解的群體,

                         我們為 資訊社會所做的努力,能給我們七夕帶來好運。告別單身,開始行動啦!

                         1.三個程式員 找到了 緣分"YuanFen"大師,希望找到自己另一半,

                         2.六個美女: 劉詩詩,蔣琴琴,白富美,朱莉,舒淇,語嫣 也找到 緣分"YuanFen" 大師,

                            希望心中的 白馬王子能給自己一注目光。

                         3.緣分大師  接受了程式員 和 美女的請求。

                         4.開始緣指派對啦! 

   3.具體編碼

          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>        /// 找了一個叫“緣分” 的中介者 做媒婆        /// </summary>        public YuanFen YuanFen { get; set; }       /// <summary>        /// 向自己心目中的 白馬王子發信       /// </summary>       /// <param name="name_message">名字和資訊</param>        public void SendMessage(Dictionary<string,string> name_message) {            YuanFen.SendToBoys(name_message);        }        /// <summary>        /// 收到某個白馬王子回信        /// </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>        /// 找了一個叫“緣分” 的中介者 做媒婆        /// </summary>        public YuanFen YuanFen { get; set; }        /// <summary>        ///向自己心目中的 白雪公主發信        /// </summary>        /// <param name="name_message">名字和資訊</param>        public void SendMessage(Dictionary<string, string> name_message)        {            YuanFen.SendToGrils(name_message);        }        /// <summary>        /// 收到某個白雪公主回信        /// </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>        /// 男孩向女孩發信        /// </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>        /// 女孩向男孩發信        /// </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.主函數(派對,發情書)

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)        {            //緣分 這個 媒婆來了            YuanFen yuanFen = new YuanFen {  Boys=new List<Boys>(), Girls=new List<Girls>()};            //男孩子們雀躍報名啊            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 + "  對語嫣說:  地球仍然轉動,世界依舊善變,而我永遠愛你");            name_message.Add("朱莉", boy2.Name + "  對朱莉說:  每天都 ...很想妳... ");            name_message.Add("舒淇", boy2.Name + "  對舒淇說:  曾經迷惘的心中,是你牽引我走出寂寞 ");            boy2.SendMessage(name_message);            name_message.Clear();            Console.WriteLine();            //語嫣 對三個程式員都感興趣            name_message.Add("程式員1", girls6.Name + "  對程式員1說:  想想和我一起看日升日落的喜悅吧!...嘻嘻");            name_message.Add("程式員2", girls6.Name + "  對程式員2說:  我的世界只有你懂.... ");            name_message.Add("程式員3", girls6.Name + "  對程式員3說:  因為知道不能沒有你,所以會更珍惜 ");            girls6.SendMessage(name_message);            name_message.Clear();            Console.WriteLine();            //蔣琴琴 很鐘情,很專一,只給程式員1 發信            name_message.Add("程式員1", girls3.Name + "  對程式員1說:  愛你一生伴你一世,你的心跳只有我聽得到");            girls3.SendMessage(name_message);            Console.ReadKey();        }    }}

5.運行結果

6.總結

  七夕來了,找回自己的緣分。

  附件裡麵包括了程式源碼。

  這裡是附件下載(Download)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.